중괄호 확장 및 복합 명령

중괄호 확장 및 복합 명령

이 두 루프가 왜 다른지 이해가 되지 않습니다. 중괄호 확장이 수행되는 시기와 공백이 해석되는 방식과 관련이 있어야 합니다.

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다시 반복 할 세 개의 값이 있습니다.bsfor

관련 정보