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

fro*_*hem 6 arrays parameters bash

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

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

Man*_*rbe 8

猛砸手册这个主题相当明确:

  • $*

    所有的位置参数,看作一个单词.

    注意:$*必须引用.

  • $@

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

    注意:当然$@应该引用.