Bagaimana cara iterate yang benar pada baris di bash baik dalam variabel, atau dari output perintah? Cukup mengatur variabel IFS ke baris baru berfungsi untuk output dari perintah tetapi tidak ketika memproses variabel yang berisi baris baru.
Sebagai contoh
#!/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
Ini memberikan output:
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
Seperti yang Anda lihat, menggemakan variabel atau mengulangi cat
perintah mencetak setiap baris satu per satu dengan benar. Namun, yang pertama untuk loop mencetak semua item dalam satu baris. Ada ide?