我正在通过我的.bashrc阅读并注意到以下内容
cd "$@" && some_other_function
$ @究竟是什么意思?
答案 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
不是运算符,而只是一个非空字符串,它总是测试为真。