Kişi bir değişkende veya bir komutun çıktısında bash satırları üzerinde doğru şekilde nasıl yinelenir? Yalnızca IFS değişkenini yeni bir satıra ayarlamak bir komutun çıktısı için işe yarar ancak yeni satırlar içeren bir değişken işlenirken kullanılmaz.
Örneğin
#!/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
Bu çıktı verir:
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
Gördüğünüz gibi, değişkenin yankılanması veya cat
komut üzerinde yinelenmesi satırların her birini birer birer doğru yazdırır. Ancak, ilk for döngüsü tüm öğeleri tek bir satıra yazdırır. Herhangi bir fikir?