Bash中的$@是什么?

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

我问是因为我通常使用搜索引擎来收集信息,但我不能谷歌$@,我已经变得太习惯了容易得到一切。

337631 次浏览

是的。请查看特殊的参数下的Bash手册页(你要去的第一件事):

特殊的参数

shell对几个参数进行了特殊处理。这些参数只能被引用;不允许分配给他们。

*展开到位置参数,从1开始。当展开发生在双引号内时,它展开为单个单词,每个参数的值由IFS特殊变量的第一个字符分隔。也就是说,"$*"等价于"$1c$2c...",其中c是IFS变量值的第一个字符。如果未配置IFS,各参数之间以空格分隔。如果IFS为空,则不使用分隔符连接参数。

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

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

如果还是没有意义,就这么做。

Bash特殊参数用四个shell脚本示例解释 . sh ="http://www.thegeekstuff.com/2010/05/bash-shell-special-parameters/