linux中shell变量$#,$@,$0,$1,$2的含义解释:
变量说明:
$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
变量说明:
$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
${ name[*]} ${ name[@]} ${ name[#*/]} ${ name[%%*]} ${ #name[*]} ${ name:-Hello}
在linux的shell里,${name}可以表示变量,也可以表示数组。 name后面加〔〕的,一般是数组, ${name[*]}是数组所有元素(all of the elements) ${name[@]}是数组每一个元素(each of the elements) 其实这两个几乎一样,差别主要在于当加上引号时,"${name[*]}"等于所有数组元素及其分隔符(一般是空格)排成的字符串,而"${name[@]}"仍然表示每一个元素。 ${#name[*]}是数组元素的个数,也可以写成${#name[@]} ${name:-Hello} 是指,如果${name}没有赋值,那么它等于Hello,如果赋值了,就保持原值,不用管这个Hello了。 至于${name[#*/]},好像没有这种写法,可能是弄错了。 ${name[%%*]}也不存在。不过,如果是${name##*}就有意义了,不过是空值。如果是在看linux的shell的话,可以在网上找advance bash scripting guide,有中文版的。
原文地址:http://www.cnblogs.com/fhefh/archive/2011/04/15/2017613.html