特殊变量
变更 | 说明 |
---|
$$ | Shell本身的PID(ProcessID) |
这个变量经常用来构造一个”unique”的临时文件名,通常比调用mktemp 来得简单 |
$! | Shell最后运行的后台Process的PID |
$? | 最后运行的命令的结束代码(返回值) |
$- | 使用Set命令设定的Flag一览 |
$* | 所有参数列表。如"\(*"用「"」括起来的情况、以"\)1 \(2 … \)n"的形式输出所有参数。 |
所有的位置参数,被作为一个单词,注意:”$*”必须被”“引用。 |
$@ | 与$*同义,但是每个参数都是一个独立的”“引用字串,这就意味着参数被完整地传递, |
并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的单词。 |
注意:”$@”必须被”“引用。 |
$# | 添加到Shell的参数个数 |
$0 | Shell本身的文件名 |
$n | 添加到Shell的各参数值。n为数字1-9,只能表示前9个参数,使用shift命令可以改变这个限制 |
$_ | 保存之前执行的命令的最后一个参数 |
区别$*、$@
function understand () {
for item in "$*"
do
echo $item
done
for item2 in "$@"
do
echo $item2
done
}
understand 1 2 3 "hel lo"
----结果----
1 2 3 hel lo
1
2
3
hel lo
- 只有当它们两个同时被” ” 引用的时候才会有差异
- 满足上面的条件后,“$*”会把所有的参数当做一个字段 而”$@”会以空格作为分隔符来划分整个的字段
- 如果空格在“ ”里面,$@不会进行划分