我无法查明使用$ {array [@]}与$ {array [*]}之间的确切区别
我在打印时看到的是差异,但我想还有更多差异
declare -a array
array=("1" "2" "3")
IFS=","
printf "%s" ${array[@]}
printf "%s" ${array[*]}
IFS=" "
Run Code Online (Sandbox Code Playgroud)
我在TLDP上进行了搜索,但找不到。它是普通的bash还是仅用于数组?非常感谢!
如中所述man bash:
如果单词用双引号引起来,则$ {name [*]}扩展为一个单词,每个数组成员的值均由IFS特殊变量的第一个字符分隔,而$ {name [@]}扩展其中的每个元素命名为一个单独的单词。
例子:
array=("1" "2" "3")
printf "'%s'" "${array[*]}"
'1 2 3'
printf "'%s'" "${array[@]}"
'1''2''3'
Run Code Online (Sandbox Code Playgroud)