Bash 中的 $@ 是啥? [复制]

Posted

技术标签:

【中文标题】Bash 中的 $@ 是啥? [复制]【英文标题】:What is $@ in Bash? [duplicate]Bash 中的 $@ 是什么? [复制] 【发布时间】:2011-04-23 08:33:19 【问题描述】:

我认为 shell 脚本中的句柄 $@ 是一个包含给脚本的所有参数的数组。这是真的吗?

我问是因为我通常使用搜索引擎来收集信息,但我无法在谷歌上搜索 $@,而且我已经习惯于轻松获得所有服务。

【问题讨论】:

You can search for it now. 你应该将'man bash'之类的东西通过管道传递到 grep 中,并将 -C 参数设置为合理的值,这是一项非常有用的技能 在这个问题 2 年后提出了链接的问题(这个问题是重复的)......这个问题不应该是这个问题的重复,而不是相反吗?跨度> Google 现在搜索符号,您的问题是结果 #1! www.google.com/search?q=%24%40 @mgarey meta.stackexchange.com/questions/147643/… 【参考方案1】:

是的。请看Special Parameters下的man page of Bash(你先去的):

特殊参数

shell 专门处理几个参数。这些参数只能被引用;不允许分配给他们。

* 扩展为位置参数,从一开始。当扩展出现在双引号内时,它会扩展为单个单词,每个参数的值由 IFS 特殊变量的第一个字符分隔。即"$*" 等价于"$1c$2c...",其中c 是IFS 变量值的第一个字符。如果未设置 IFS,则参数以空格分隔。如果 IFS 为 null,则将参数连接起来,而不会插入分隔符。

@ 扩展为位置参数,从一开始。当扩展出现在双引号内时,每个参数都扩展为一个单独的单词。即"$@"等价于"$1""$2"……如果双引号扩展出现在一个单词中,第一个参数的扩展与原单词的开头部分连接,扩展最后一个参数与原始单词的最后一部分相连。当没有位置参数时,"$@"$@ 扩展为空(即,它们被删除)。

【讨论】:

哦,天哪,它只有 5000 行 ;) 就像 djanlib 说的:使用类似man bash | grep -C2 '$@' @vecvan 阅读 man bash 前的问题数:1 ...阅读 man bash 后的问题数:12,031 文档并不总是获得解释的最佳位置。认为作者可以以易于理解的答案阐明某事物的功能是一个巨大的假设。这就是我们有这个论坛的原因。 如cmbuckley所说,要向man bash学习,首先要了解man bash【参考方案2】:

仅仅从阅读中我永远不会理解"$@" 会扩展为一个单独的参数列表。而"$*"是一个参数,由所有参数相加而成。

如果仍然没有意义,请执行此操作。

Bash special parameters explained with four example shell scripts

【讨论】:

那篇文章写得非常好!终于明白了:)谢谢分享 很好的链接,内容丰富,易于理解

以上是关于Bash 中的 $@ 是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

bash 中的“1>&2”是啥意思? [复制]

Bash 中的 bang 美元 (!$) 是啥?

Bash:2>&1 是啥意思? [复制]

$var?中bash变量参数扩展中的问号是啥意思?

bash中的冒号破折号“:-”是啥意思[重复]

$VARIABLE+x 在 bash 中是啥意思? [复制]