对于变量 z
z="I II III IV V VI VII VIII IX X XI XII XIII XIV XV XVI XVII XVIII XIX XX"
echo "${z// /,}"
输出I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII,XIII,XIV,XV,XVI,XVII,XVIII,XIX,XX
正常。
但对于
Y=(I II III IV V VI VII VIII IX X XI XII XIII XIV XV XVI XVII XVIII XIX XX)
echo "${Y[@]// /,}"
输出是I II III IV V VI VII VIII IX X XI XII XIII XIV XV XVI XVII XVIII XIX XX
答案1
因为对于
Y=(I II III IV)
如果你这样做:
"${Y[@]// /,}"
数组中每个元素的所有空格都将重新替换为,
。
例如:
$ Y=('I foo' 'II bar' III IV)
$ echo "${Y[@]// /,}"
I,foo II,bar III IV
由于数组的任何元素中都没有空格,因此不需要替换任何内容。