Bash中`$ *`和`$ @`有什么区别?

时间:2015-08-26 08:23:38

标签: arrays bash parameters

当我想要bash函数的所有参数时,我总是使用$@但最近我发现$*也以相同的方式工作,它也可以用作数组索引。

我的问题是Bash中$*$@之间的区别是什么?我应该选择哪一个?

2 个答案:

答案 0 :(得分:8)

Bash manual在这个主题上非常明确:

  
      
  • $*

         

    所有位置参数,被视为一个单词。

         

    注意:必须引用$*

  •   
  • $@

         

    $*相同,但每个参数都是带引号的字符串,也就是说,参数是完整传递的,没有解释或扩展。这意味着,除其他外,参数列表中的每个参数都被视为一个单独的单词。

         

    注意:当然,应引用$@

  •   

答案 1 :(得分:2)

这里有一个历史发展。 $*被发现不足,因此引入$@来取代它。仍然存在$*有用的情况;但除非你特意想要打破引用的代币,否则你应该避免它。