这两个数组符号有什么区别?
"${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