SHELL特殊变量¶
特殊变量¶
变量 |
说明 |
---|---|
|
当前脚本的文件名 |
|
传递给脚本或函数的参数: n 是一个数字,表示第几个参数 |
|
传递给脚本或函数的参数个数 |
|
传递给脚本或函数的所有参数 |
|
传递给脚本或函数的所有参数(被双引号 |
|
SHEEL最后运行的命令的结束代码(返回值) |
|
SHELL自身pid(ProcessID) |
|
SHELL最后运行的后台进程的PID |
$*
和 $@
区别¶
$*
和 $@
都表示传递给脚本或函数的所有参数,但是当被双引号 " "
包含时区别如下:
$*
将所有参数作为一个整体,以"$1 $2 ... $n"
的形式输出所有参数$@
将所有参数分开,以"$1" "$2" … "$n"
的形式输出所有参数
$?
¶
$?
可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0
,失败返回 1
。
不过,也有一些命令返回其他值,表示不同类型的错误。
检查脚本参数的案例¶
要求传递的参数是某个目录,我们的脚本逻辑需要检查:
是不是传递了一个参数
传递的参数是不是一个存在的目录
#!/bin/sh
if [ "$#" -ne 1 ] || ! [ -d "$1" ]; then
echo "Usage: $0 DIRECTORY" >&2
exit 1
fi