변수 또는 명령 출력에서 bash의 행을 어떻게 올바르게 반복합니까? IFS 변수를 새 행으로 설정하면 명령 출력에 효과적이지만 새 행이 포함 된 변수를 처리 할 때는 작동하지 않습니다.
예를 들어
#!/bin/bash
list="One\ntwo\nthree\nfour"
#Print the list with echo
echo -e "echo: \n$list"
#Set the field separator to new line
IFS=$'\n'
#Try to iterate over each line
echo "For loop:"
for item in $list
do
echo "Item: $item"
done
#Output the variable to a file
echo -e $list > list.txt
#Try to iterate over each line from the cat command
echo "For loop over command output:"
for item in `cat list.txt`
do
echo "Item: $item"
done
출력이 나타납니다.
echo:
One
two
three
four
For loop:
Item: One\ntwo\nthree\nfour
For loop over command output:
Item: One
Item: two
Item: three
Item: four
보시다시피, 변수를 반향하거나 cat
명령을 반복 하면 각 줄이 하나씩 올바르게 인쇄됩니다. 그러나 첫 번째 for 루프는 모든 항목을 한 줄에 인쇄합니다. 어떤 아이디어?