我在shell脚本中经常遇到$? $0 $1 $2等
,我所知道的是$?
返回上一个命令的退出状态。
echo "this will return 0"
echo $?
但其他人做什么?他们被称为什么?还有更多吗?比如 $3 $4 $5 ...
./script.sh Hello World
会制作
$0 = ./script.sh
$1 = Hello
$2 = World
注意
如果您执行./script.sh
,$0
将输出./script.sh
,但如果您使用bash script.sh
执行它,则会输出script.sh
。
它们被称为位置参数。
3.4.1 位置参数
一个位置参数是一个由一个或多个数字表示的参数,除了单个数字0之外。当shell被调用时,位置参数从shell的参数中分配,并且可以使用set内置命令重新分配。位置参数N可以被引用为${N},或者当N由一个数字组成时,可以被引用为$N。位置参数不能被赋值。set和shift内置命令用于设置和取消它们(请参见Shell内置命令)。当执行shell函数时,位置参数会被临时替换(请参见Shell函数)。
当扩展超过一个数字的位置参数时,必须将其括在大括号中。
$?
是一个特殊参数,它在这里有详细的解释:https://www.gnu.org/software/bash/manual/bash.html#Special-Parameters。 - Aaron Digulla