このパターン置換が配列で機能しないのはなぜですか?

このパターン置換が配列で機能しないのはなぜですか?

変数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

配列のすべての要素にはスペースがないため、置き換える必要はありません。

おすすめ記事