变量 | 含义 |
---|---|
$0 | 当前脚本的文件名 |
$n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 |
$# | 传递给脚本或函数的参数个数。 |
$* | 传递给脚本或函数的全部参数。 |
$@ | 传递给脚本或函数的全部参数。被双引号(" ")包含时,与 $* 稍有不一样。 |
$? | 上个命令的退出状态,或函数的返回值。 |
$$ | 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 |
$* 和 $@ 都表示传递给函数或脚本的全部参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出全部参数。
可是当它们被双引号(" ")包含时,"$*" 会将全部的参数做为一个总体,以"$1 $2 … $n"的形式输出全部参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出全部参数。
下面的例子能够清楚的看到 $* 和 $@ 的区别:函数
执行 ./test.sh "a" "b" "c" "d",看到下面的结果:进程
$*= a b c d "$*"= a b c d $@= a b c d "$@"= a b c d print each param from $* a b c d print each param from $@ a b c d print each param from "$*" a b c d print each param from "$@" a b c d
$? 能够获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
退出状态是一个数字,通常状况下,大部分命令执行成功会返回 0,失败返回 1。
不过,也有一些命令返回其余值,表示不一样类型的错误。
下面例子中,命令成功执行:io
$./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara Ali Quoted Values: Zara Ali Total Number of Parameters : 2 $echo $? 0-e filename 若是 filename存在,则为真-d filename 若是 filename为目录,则为真 -f filename 若是 filename为常规文件,则为真-L filename 若是 filename为符号连接,则为真-r filename 若是 filename可读,则为真 -w filename 若是 filename可写,则为真 -x filename 若是 filename可执行,则为真-s filename 若是文件长度不为0,则为真-h filename 若是文件是软连接,则为真filename1 -nt filename2 若是 filename1比 filename2新,则为真.filename1 -ot filename2 若是 filename1比 filename2旧,则为真.-eq 等于-ne 不等于-gt 大于-ge 大于等于-lt 小于-le 小于等于至于!号那就是取非了呗!