이 패턴 교체가 배열에서 작동하지 않는 이유는 무엇입니까?

이 패턴 교체가 배열에서 작동하지 않는 이유는 무엇입니까?

변수 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

배열의 모든 요소에는 공백이 없으므로 바꿀 필요가 없습니다.

관련 정보