$ @在bash脚本中意味着什么?

时间:2012-04-12 23:14:51

标签: bash

我正在通过我的.bashrc阅读并注意到以下内容

cd "$@" && some_other_function

$ @究竟是什么意思?

5 个答案:

答案 0 :(得分:5)

"$@"扩展为引用的命令行参数列表。它与"$*"略有不同:给定

set "a b" c d

"$*"扩展为

"a b c d"

"$@"扩展为

"a b" c d

$*(或$@)扩展为

a b c d

也就是说,“$*"生成一个字符串但"$@"复制原始引​​文,$*会丢失引号。

答案 1 :(得分:2)

这是所有的位置参数,每个都是双引号。 http://tldp.org/LDP/abs/html/internalvariables.html#APPREF

答案 2 :(得分:1)

来自man bash

  

@
  从1开始扩展到位置参数。当扩展发生在双引号内时,每个参数都会扩展为单独的单词。也就是说,“$ @”相当于“$ 1”“$ 2”...如果双引号扩展发生在一个单词中,则第一个参数的扩展与原始单词的开头部分连接,并且扩展最后一个参数与原始单词的最后一部分连接。

答案 3 :(得分:1)

$ @表示传递给脚本的所有参数。

如果您调用名为foo.sh的脚本,请执行以下操作:

$>  foo.sh boo goo loo

$ @ 的输出将是:

 > boo goo loo

答案 4 :(得分:0)

$@为空时,$@不会扩展为空字符串;它完全被删除了。所以你的测试不是:

[ -n "" ]

而是:

[ -n ]

现在-n不是运算符,而只是一个非空字符串,它总是测试为真。