서브셸의 for 루프에 대해 IFS 설정

서브셸의 for 루프에 대해 IFS 설정
IFS='\n'
for i in "$(IFS='\n' printf 'abc\nxyz\n123 456\n')"; do
    echo "????"
    echo "$i"
done

echo "output"
echo "${args[@]}"

다음 출력:

????
abc
xyz
123 456
output

for 루프가 각 행을 반복하도록 하려면 어떻게 해야 합니까? IFS='\n'명령이 이런 식으로 실행되지 않는 이유 는 무엇입니까 ?

답변1

큰따옴표는 "명령 대체"를 매개변수로 만듭니다. 다음을 사용하지 않고 시도해 보세요.

$ for i in $( printf 'abc\nxyz\n123 456\n'); do   echo "????";   echo "$i"; done
????
abc
????
xyz
????
123 456

또한 IFS설정은 "\"와 "n"이라는 두 문자를 포함하는 문자열입니다. 예를 들어 bash, 시도해 보고 싶을 수도 있습니다 $'\n'.

관련 정보