我无法精确指出使用${array[@]}与使用${array[*]}之间的确切区别
declare -a array array=("1" "2" "3") IFS="," printf "%s" ${array[@]} printf "%s" ${array[*]} IFS=" "
我在TLDP上搜索了一下,但没找到。 它是一个通用的bash还是仅仅针对数组? 谢谢!
如中所述 man bash :
man bash
如果单词是双引号,${name[*]}扩展为单个单词,每个数组成员的值由IFS特殊变量的第一个字符分隔,并且${name[@]} 将name的每个元素展开为一个单独的单词。
示例:
array=("1" "2" "3") printf "'%s'" "${array[*]}" '1 2 3' printf "'%s'" "${array[@]}" '1''2''3'