Bash 中数组符号的差异

Bash 中数组符号的差异

这两个数组符号有什么区别?

  • "${aws_user_roles[@]}"
  • "${aws_user_roles[*]}"

答案1

正如所提到的man bash

如果下标为 @ 或 *,则单词将扩展为 name 的所有成员。只有当单词出现在双引号内时,这些下标才不同。如果单词被双引号引起来,则${name[*]}扩展为一个字其中每个数组成员的值由 IFS 特殊变量的第一个字符分隔,并${name[@]}展开每个元素名称变为一个单独的单词。

例子:

aws_user_roles=( a "b c" d )

for i in "${aws_user_roles[*]}"; do echo $i; done
a b c d

for i in "${aws_user_roles[@]}"; do echo $i; done
a
b c
d

相关内容