美元符号跟方括号表示表达式
$[expression]
用$?来查看最后一条命令的退出状态码
0表示成功
1表示给某个命令提供了无效参数
126表示没有权限
127表示命令不对
退出状态码可以自定义
if-then语句,if后面的命令如果退出码是0成功,then后面的语句才会执行。
用在if-then中的test命令有个等价方法,就是方括号[]
if [ condition ]
then
commands
fi
注意,变态的规定就是在左括号右侧,和右括号的左侧要各留一个空格,
否则会报错。
方括号中的condition是比较奇葩的,比如:数值比较:
-eq, -ge, -gt, -le, -lt, -ne前面都有一个短横线,像是减号
condition还可以包含字符串比较功能,有二个也比较奇葩:
-n str1 检查str1的长度是否非0
-z str1 检查str1的长度是否为0
测试字符串顺序容易搞错,> <会被认为是重定向符号,所以要转义,但是
一旦转义,语法就奇葩了
if [ $var1 \> $val2 ]
如果命令行参数多于9个,使用时需要修改一下变量名。在第九个变量之后,必须在变量数字周围加花括号,
比如${10},奇葩