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

Lin*_*Lin 71 bash shell ash

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

echo "this will return 0"
echo $?
Run Code Online (Sandbox Code Playgroud)

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

Grz*_*Żur 146

这些是脚本的位置参数.

执行

./script.sh Hello World
Run Code Online (Sandbox Code Playgroud)

会做的

$0 = ./script.sh
$1 = Hello
$2 = World
Run Code Online (Sandbox Code Playgroud)

注意

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


Eta*_*ner 26

它们被称为位置参数.

3.4.1位置参数

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

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

  • `$?` 是一个特殊参数,在这里解释:https://www.gnu.org/software/bash/manual/bash.html#Special-Parameters (3认同)