Shell脚本不是复杂的程序,它是由上往下逐行解释执行的。脚本第一行总是以#!<shell解释器文件路径>开始。(改变登录shell,首先输入命令chsh,然后在提示符后输入密码和要使用的shell的绝对路径)
-
数值测试
[数值1运算符数值2]
方括号与条件之间必须有空格。
关系运算符 |
说明 |
关系运算符 |
说明 |
-eq |
等于 |
-lt |
小于 |
-ne |
不等于 |
-ge |
大于等于 |
-gt |
大于 |
-le |
小于等于 |
-
字符串测试
可以对两个字符串进行比较也可以对单个字符串的值是否为空或为非空进行测试。
[关系运算符字符串 ]
[字符串1关系运算符字符串2]
关系运算符 |
说明 |
关系运算符 |
说明 |
= |
两个字符串相等 |
-z |
字符串为空 |
!= |
两个字符串不相等 |
-n |
字符串不为空 |
-
文件状态测试
[关系运算符字符串 ]
关系运算符 |
说明 |
关系运算符 |
说明 |
-d |
目录 |
-w |
可写 |
-f |
文件 |
-x |
可执行 |
-L |
连接文件 |
-u |
设置了suid |
-r |
可读 |
-s |
文件长度大于零 |
-
控制语句
if-then-else分支语句
if条件1
then命令列表
elif条件2
then命令列表
else命令列表
fi
case分支结构
case值或变量in
模式1)
命令列表
;;
模式2)
命令列表
;;
…….
esac
for循环结构
for变量名in值列表
do
命令1
命令2
…..
done
-
特殊变量
变量名 |
说明 |
$# |
传递给脚本的参数个数 |
$* |
传递给脚本的所有参数值 |
$@ |
与$*相同 |
$$ |
脚本执行所对应的进程号 |
$! |
后台运行的最后一个进程的进程号 |
$- |
显示shell使用的当前选项 |
$? |
显示命令的退出状态,0正确,1错误 |