변수를 반복할 때 왜 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