Shell脚本编程中的若干注意事项

几个特殊变量

变量 含义
$$ Shell本身的PID(ProcessID)
$! Shell最后运行的后台Process的PID
$? 最后运行的命令的结束代码(返回值)
$- 使用Set命令设定的Flag一览
$* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$# 添加到Shell的参数个数
$0 Shell本身的文件名
$1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。如果大于等于10序号要用花括号包起来,例如${10}

test命令

test命令用于检查文件类型和表达式(check file types and compare values),返回的结果放在“$?”里,结果为0表示true,结果不为0表示false。例如:

$ test "a" = "b"
$ echo $?
1

test命令可以用“[]”简写(注意[]里面要带有空格,否则提示command not found),后面加上&&符号则表示当表达式成立时执行后续操作。例如:

$ [ "a" = "a" ] && echo yes
yes

类似的,后面加上“||”则表示当表达式不成立时执行后续操作。

-z参数用来判断字符串是否为空,例如:

$ [ -z "" ] && echo yes
yes

还有一些类似的其他表达式参数,以及与文件相关的参数,可以man test查看。

参考链接: