bash数组使用@ vs *,两者之间的区别

时间:2018-10-01 11:48:32

标签: linux bash

我无法指出使用$ {array [@]}与$ {array [*]}之间的确切区别

打印时我看到的是什么差异,但我想还有更多差异

declare -a array
array=("1" "2" "3")
IFS=","
printf "%s" ${array[@]}
printf "%s" ${array[*]}
IFS=" "

我在TLDP上进行了搜索,但找不到。 它是普通的bash还是仅用于数组? 非常感谢!

1 个答案:

答案 0 :(得分:4)

man bash中所述:

  

如果单词用双引号引起来,则$ {name [*]}扩展为单个单词,每个数组成员的值都由IFS特殊变量的第一个字符分隔,而$ {name [@]}   将名称的每个元素扩展为一个单独的单词。

示例:

array=("1" "2" "3")
printf "'%s'" "${array[*]}"
'1 2 3'
printf "'%s'" "${array[@]}"
'1''2''3'