문자열이 변수에 있을 때 문자열 반복이 다르게 작동하는 이유는 무엇입니까?

문자열이 변수에 있을 때 문자열 반복이 다르게 작동하는 이유는 무엇입니까?

변수를 반복할 때 왜 n="1 2 3"다음과 같은 결과가 나오는지 궁금합니다.

$ n="1 2 3"; for a in $n; do echo $a $a $a; done
1 1 1
2 2 2
3 3 3

그러나 문자열을 먼저 변수에 넣지 않으면 완전히 다른 동작이 발생합니다.

$ for a in "1 2 3"; do echo $a $a $a; done
1 2 3 1 2 3 1 2 3

아직도 낯선 사람:

$ for a in ""1 2 3""; do echo $a $a $a; done
1 1 1
2 2 2
3 3 3

문자열이 변수에 있든 없든 문자열이 다르게 동작하는 이유는 무엇입니까?

답변1

n="1 2 3"
for a in $n; do        # This will iterate over three strings, '1', '2', and '3'

for a in "1 2 3"; do   # This will iterate once with the single string '1 2 3'
for a in "$n"; do      # This will do the same

for a in ""1 2 3""; do # This will iterate over three strings, '""1', '2', and '3""'.  
                       # The first and third strings simply have a null string
                       # respectively prefixed and suffixed to them

관련 정보