当我想要bash函数的所有参数时,我总是使用$@
但最近我发现$*
也以相同的方式工作,它也可以用作数组索引。
我的问题是Bash中$*
和$@
之间的区别是什么?我应该选择哪一个?
答案 0 :(得分:8)
Bash manual在这个主题上非常明确:
$*
所有位置参数,被视为一个单词。
注意:必须引用
$*
。
$@
与
$*
相同,但每个参数都是带引号的字符串,也就是说,参数是完整传递的,没有解释或扩展。这意味着,除其他外,参数列表中的每个参数都被视为一个单独的单词。注意:当然,应引用
$@
。
答案 1 :(得分:2)
这里有一个历史发展。 $*
被发现不足,因此引入$@
来取代它。仍然存在$*
有用的情况;但除非你特意想要打破引用的代币,否则你应该避免它。