Bash中的$@是什么?

Bash中的$@是什么?,bash,arguments,Bash,Arguments,我认为shell脚本中的句柄$@是给定给脚本的所有参数的数组。这是真的吗 我问这个问题是因为我通常使用搜索引擎来收集信息,但我不能用谷歌搜索$@,而且我已经习惯于轻松获得所有服务。是的。请参见“特殊参数”下的(第一件事): 特殊参数 shell专门处理几个参数。这些参数只能被引用;不允许分配给他们 *展开到位置参数,从一开始。当展开发生在双引号内时,它将展开为一个单词,每个参数的值由IFS特殊变量的第一个字符分隔。也就是说,“$*”相当于“$1c$2c…”,其中c是IFS变量值的第一个字符。如果

我认为shell脚本中的句柄
$@
是给定给脚本的所有参数的数组。这是真的吗

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

是的。请参见“特殊参数”下的(第一件事):

特殊参数

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

*
展开到位置参数,从一开始。当展开发生在双引号内时,它将展开为一个单词,每个参数的值由IFS特殊变量的第一个字符分隔。也就是说,
“$*”
相当于
“$1c$2c…”
,其中
c
是IFS变量值的第一个字符。如果未设置IFS,则参数之间用空格分隔。如果IFS为null,则参数将在不插入分隔符的情况下联接

@
展开到位置参数,从一开始。当展开发生在双引号内时,每个参数展开为一个单独的字。也就是说,
“$@”
相当于
“$1”
“$2”
。。。如果双引号展开发生在单词内,则第一个参数的展开与原始单词的开头部分连接,最后一个参数的展开与原始单词的最后部分连接。当没有位置参数时,
“$@”
$@
将展开为零(即,它们将被删除)


仅仅通过阅读,我永远不会理解,
“$@”
会扩展成一个单独参数的列表。然而,
“$*”
是一个由所有加在一起的参数组成的参数

如果仍然没有意义,就这样做


哦,天哪,好吧,它只有5000行;)就像djanlib说的:在阅读man bash之前,使用类似于
man bash | grep-C2'$@
@vecvan的一些问题:1。。。阅读man bash后的问题数量:12031文档并不总是获得解释的最佳场所。认为作者可以用一个简单易懂的答案表达某事物的功能是一个巨大的假设。这就是为什么我们有这个论坛。正如cmbuckley所说,要从
manbash
中学习,你必须首先理解
manbash
。你应该将像“manbash”这样的东西导入grep,并将-C参数设置为合理的值,这是一个非常有用的技巧链接的问题(这个问题是的重复)两年后被问到这个问题。。。这个问题不应该是这个问题的重复,而不是相反吗?谷歌现在搜索符号,你的问题是结果#1!www.google.com/search?q=%24%40@mgarey那篇文章写得非常好!最后我明白了:)谢谢分享