shell脚本
来源:互联网 发布:网络监控交换机连接 编辑:程序博客网 时间:2024/05/18 23:27
脚本:一些命令的集合 有shell脚本和bush脚本
建立脚本文件:shell脚本文件名的后缀为 .sh
脚本文件的执行前要将文件赋予可执行权限 chmod +x 文件名 (注意,此+在赋予权限时是存在的)
shell脚本的基本元素 #!/bin/bash (表示脚本类型 不写的话linux系统默认为bush类型 #为注释作用 在文件的开始前一定要添加这样的一行代码)
shell的三种运行方式 1、./脚本文件名(xxx.sh)
2、 bush xxx.sh
3、 sh xxxx.sh
shell文件的创建过程 1、编写xxx.sh文件
2、给这个文件赋予可执行权限 chmod +x xxx.sh
3、执行
pwd :显示当前内容
echo : 作用是将字符串输出到终端 echo 要输出的内容
shell程序的组成 1、shell类型
2、函数(shell函数无返回值和参数)
3、程序主体
shell函数中的一些特殊符号
# 表示注释
$ 取变量的值
echo 进行输出 在终端上显示
" " (双引号)中间包含的内容是字符串
其中特殊的地方为 :这个字符串内部的$符号不会被解释为字符串 会被当作特殊字符来处理 要想输出$需要用转义字符\
例:"\$path"的输出结果为$path
双引号中的特殊字符为 \ $ `
' ' (单引号)包含的内容都是字符串 不将任何字符作为特殊字符来处理
` ` (倒引号)包含的内容会被当作命令来执行
HOME 是命令 代表当前用户的当前工作目录
举例:
1、echo "my name is $HOME"
结果显示为 my name is /root
2、echo "my name is $HOME"
结果显示为 my name is $HOME
3、echo "my name is $HOME"
结果显示为 无法输出结果 错误
4、echo "my name is `pwd`"
结果显示为 my name is /home
5、echo 'my name is `pwd`'
结果显示为 my name is `pwd`
变量 :可以保持路径名、文件名、或者一个数字
变量类型: 1、 局部变量 只可以在当前使用 可以任意的使用和修改
赋值 变量名=值 等号左右两边不可有空格 若取值包含空格 则必须用双引号括起来 变量区分大小写
引用 $变量名 (一个字符时使用 a )
${变量名} (超过一个字符时使用 abc)
echo $变量名 显示单个变量的取值
清除变量 取消变量 unset 变量名 例如 unset ${name}
unset name (无$)
set 显示本地所有的变量
2、 环境变量 在所有终端均可以使用 环境变量均为大写 比如PATH HOME
设置环境变量 variable-name=value 或
export variable-name (名字要大写)(一般情况下我们不要去设置环境变量)
显示环境变量 env 这是一个命令
PATH 包含一列用冒号定界的目录的路径名字 便于可执行程序的搜索
例 PATH=$PATH: /home/0514/ 复制了路径(/home/0514) 是临时性的
3、只读变量 readonly 不可在改变其变量值 变量名=值
readonly 变量名
4、内部变量 不可修改
函数无参数 不需要声明
需要参数时如何获取(显示出已有的参数) : 共有几个参数
命令与参数直接用空格隔开
数字代表第几个参数
$# 传递给shell程序的位置参数的数量
0代表本身 $0 shell程序的名称
取所有参数的值用* $* 调用所有参数
运行时先跳过函数 然后再返回
echo $? ?代表上一次命令执行的结果或返回值
(结果为0 正确
结果非0 错误)
exit返回数字 不接受字符串
创建变量 1、 可以在任何时间通过简单的赋值来创建 <variable name>=<value> (shell中所有的变量都被当作字符串)
2、引用变量 用符号$来引用变量的内容 variable1=${variable2}
3、使用read命令 read 变量(不分类型) 在终端上输的值会赋给变量
命令 1、 expr 用于求值
expr $((表达式)) 表达式中的运算符号 +、\*(利用了转义字符)、/ 加、乘、除
此式子整体含义为计算表达式的值
echo $((表达式)) 也是在终端上直接输出表达式的值
2、operation (opt) 操作运算
3、 date 输出当前的时间
条件判断 1、 test num1 命令 num2
-lt (小于)
-le(小于等于)
-gt(大于)
-ge(大于等于)
-eq(等于)
-ne(不等于)
格式 test num1 命令 num2
echo $?
2、 [ num1 命令 num2 ] (为test语句的等价形式 用[]代替了test)
分括号前后和num之间一定要有空格
if语句 if 条件
then
处理的事情a
else
处理的事情b
fi (if语句的结束符为fi)
判断参数必须为1 一个参数情况下判断文件是否存在
exit(退出)+数字 例exit 1
文件测试的一些命令 -f 判断文件是否存在
-d 判断文件是否为目录
-w -r -x 判断文件是否可读可写可执行
例如 test -f 文件名
echo $?
-a 与
-o 或
!非
分支语句 1、 if
2、case case “$#” in
n) 语句 ;;
esca
其中: $# 代表参数的个数
in 关键字
esca 结束标志
每个语句的结束都要是;;
n
循环语句 1、 while循环
格式 while <条件>
do
<循环体,命令>
done
2、 for循环
格式 for i in 参数范围(参数之间以空格区分)
do
echo $i
done
3、until循环:执行假的循环体 直到条件为真时跳出循环体
补充一些命令 1、命令seq 为产生一组数字序列
例 `seq a b ` 其中a b 为两个参数 结果产生a到b之间所有的数
执行命令加倒引号
也可在终端直接书写 在终端书时用;隔开
- shell脚本
- shell脚本
- shell脚本
- shell脚本
- shell脚本
- shell脚本
- shell脚本
- shell 脚本
- SHELL 脚本
- shell脚本
- shell脚本
- shell 脚本
- shell脚本
- shell脚本
- shell脚本
- shell脚本
- shell脚本
- shell脚本
- 抓取国家统计局数据
- IOS 注销到登录页面
- ssh框架整合之从struts2开始
- 解决eclipse配置Tomcat时找不到server选项
- Java安全开发规范
- shell脚本
- nginx安装
- TCP/IP协议簇简单介绍
- 模运算
- 关于单通道转三通道一些问题
- PLSQL 之类型、变量和结构
- Mysql 语句执行顺序
- Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
- 串联和并联电阻办法的阻抗匹配方法解析