什么$?在shell脚本中$ 0 $ 1 $ 2是什么意思?

时间:2015-03-25 14:33:15

标签: bash shell ash

我经常在shell脚本中遇到$? $0 $1 $2 etc....,我知道$?返回最后一个命令的退出状态

echo "this will return 0"
echo $?

但其他人做了什么?他们叫什么,还有更多吗?也许就像$ 3 $ 4 $ 5 ......

2 个答案:

答案 0 :(得分:135)

这些是脚本的位置参数。

执行

./script.sh Hello World

将制作

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

注意

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

答案 1 :(得分:24)

它们被称为Positional Parameters

  

3.4.1位置参数

     

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

     

当展开由多个数字组成的位置参数时,必须将其括在大括号中。