shell特殊变量

特殊变量列表
变量 含义
$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 小于等于至于!号那就是取非了呗!
相关文章
相关标签/搜索