98

I often come across $? $0 $1 $2 etc.... in shell scripting, what I know is that $? returns the exit status of the last command

echo "this will return 0"
echo $?

but what do the others do? what are they called and is there more? perhaps like $3 $4 $5 ...

4

2 回答 2

186

这些是脚本的位置参数。

执行

./script.sh Hello World

会让

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

笔记

如果你执行./script.sh$0将给出输出./script.sh,但如果你执行它,bash script.sh它将给出输出script.sh

于 2015-03-25T14:34:57.143 回答
31

它们被称为位置参数

3.4.1 位置参数

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

当扩展包含多个单个数字的位置参数时,必须将其括在大括号中。

于 2015-03-25T14:35:06.157 回答