在shell脚本中,$?、$0、$1和$2分别代表什么意思?

117

我在shell脚本中经常遇到$? $0 $1 $2等,我所知道的是$?返回上一个命令的退出状态。

echo "this will return 0"
echo $?

但其他人做什么?他们被称为什么?还有更多吗?比如 $3 $4 $5 ...


1
http://tldp.org/LDP/abs/html/othertypesv.html - Tom Fenech
2个回答

209
这些是脚本的位置参数。 执行中。
./script.sh Hello World

会制作

$0 = ./script.sh
$1 = Hello
$2 = World

注意

如果您执行./script.sh$0将输出./script.sh,但如果您使用bash script.sh执行它,则会输出script.sh


34

它们被称为位置参数

3.4.1 位置参数

一个位置参数是一个由一个或多个数字表示的参数,除了单个数字0之外。当shell被调用时,位置参数从shell的参数中分配,并且可以使用set内置命令重新分配。位置参数N可以被引用为${N},或者当N由一个数字组成时,可以被引用为$N。位置参数不能被赋值。set和shift内置命令用于设置和取消它们(请参见Shell内置命令)。当执行shell函数时,位置参数会被临时替换(请参见Shell函数)。

当扩展超过一个数字的位置参数时,必须将其括在大括号中。


3
$? 是一个特殊参数,它在这里有详细的解释:https://www.gnu.org/software/bash/manual/bash.html#Special-Parameters。 - Aaron Digulla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接