Cukup berikan string Anda ke fungsi Anda:
function my_function
{
while test $# -gt 0
do
echo "do something with $1"
shift
done
}
my_string="cat
dog
bird"
my_function $my_string
memberi Anda:
do something with cat
do something with dog
do something with bird
Dan jika Anda benar-benar peduli dengan spasi putih lain yang diambil sebagai pemisah argumen, atur dulu IFS
Anda :
IFS="
"
my_string="cat and kittens
dog
bird"
my_function $my_string
untuk mendapatkan:
do something with cat and kittens
do something with dog
do something with bird
Jangan lupa unset IFS
setelah itu.
Gunakan ini (ini adalah pengulangan membaca setiap baris dari file file
)
cat file | while read -r a; do echo $a; done
di mana echo $a
adalah apa pun yang ingin Anda lakukan dengan saluran saat ini.
PEMBARUAN:dari komentator (terima kasih!)
Jika Anda tidak memiliki file dengan banyak baris, tetapi memiliki variabel dengan banyak baris, gunakan
echo "$variable" | while read -r a; do echo $a; done
UPDATE2:"read -r
" disarankan untuk menonaktifkan garis miring terbalik (\
) interpretasi karakter (periksa komentar mtraceur; didukung di sebagian besar shell). Ini didokumentasikan dalam POSIX 1003.1-2008 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html
Secara default, kecuali opsi -r ditentukan,
<backslash>
akan bertindak sebagai karakter melarikan diri. .. Opsi berikut didukung:-r
- Jangan perlakukan<backslash>
karakter dengan cara khusus. Anggap masing-masing sebagai bagian dari jalur masukan.