$做啥? $0 $1 $2 在 shell 脚本中是啥意思? [复制]

Posted

技术标签:

【中文标题】$做啥? $0 $1 $2 在 shell 脚本中是啥意思? [复制]【英文标题】:What do $? $0 $1 $2 mean in shell script? [duplicate]$做什么? $0 $1 $2 在 shell 脚本中是什么意思? [复制] 【发布时间】:2015-05-29 07:08:03 【问题描述】:

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

echo "this will return 0"
echo $?

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

【问题讨论】:

tldp.org/LDP/abs/html/othertypesv.html 【参考方案1】:

这些是脚本的位置参数。

执行

./script.sh Hello World

会做

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

注意

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

【讨论】:

【参考方案2】:

他们被称为Positional Parameters。

3.4.1 位置参数

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

当一个包含多个数字的位置参数被展开时,它必须用大括号括起来。

【讨论】:

$? 是一个特殊的参数,在这里解释:gnu.org/software/bash/manual/bash.html#Special-Parameters

以上是关于$做啥? $0 $1 $2 在 shell 脚本中是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

sqlplus 中的 -s 选项是做啥用的?

Linux下怎么建立任务计划,shell文件是做啥的?以啥为后缀,前两者之间有啥关系

往shell脚本中传入参数

shell脚本中的$#表示啥意思呢?

shell 脚本传参

shell编程学习笔记之特殊变量($0$1$2 $? $# $@ $*)