이 두 루프가 왜 다른지 이해가 되지 않습니다. 중괄호 확장이 수행되는 시기와 공백이 해석되는 방식과 관련이 있어야 합니다.
for i in b{e,\ }s ; do echo $i ; done
for i in bes b s ; do echo $i ; done
그리고 이것을 고려해보세요
for i in $(echo b{e,\ }s) ; do echo $i ; done
답변1
이렇게 하면 for i in b{e,\ }s ; do echo $i ; done
중괄호 확장이 b{e,\ }s
두 개의 인수(하나는 is bes
이고 다른 하나는 is ) b s
로 확장되므로 for
루프에는 반복할 두 개의 값이 있습니다. 여기에는 매개변수 가 b s
하나만 있습니다.
반면에 에서는 for i in bes b s ; do echo $i ; done
반복할 세 개의 인수(공백으로 구분), 즉 bes
, b
및 를 명시적으로 언급했습니다 s
.
세 번째 경우, 명령 대체는 $(echo b{e,\ }s)
세 개의 인수를 생성하므로 두 번째 경우와 마찬가지로 루프에는 bes
다시 반복 할 세 개의 값이 있습니다.b
s
for