LINUX.ORG.RU

for i in word и IFS


0

0
В bash-скрипте у меня генерируется список вида:

LIST="aaa asdd
ttt tt
sddas"

надо сделать цикл по строкам. Использовал цикл вида:
for i in $LIST ; do ... ; done
но for воспринимает пробел как разделитель, и соответственно для списка выше цикл выполняется пять, а не три раза. Попробовал менять IFS но ничего не вышло

anonymous
LIST="aaa asdd ttt tt sddas"

IFS=' '

for i in $LIST ; do ... ; done

anonymous
()
Ответ на: комментарий от anonymous
А если внутри цикла нужен нормальный IFS?
anonymous
()
Еще можно так:

while read i ; do 
...
done <<EOF
asd asd
qwe qwe 
zxc zxc 
EOF

>В bash-скрипте

В этом случае можно использовать массивы:

z=("asd asd" "qweqwe" "fdas fds")
for i in "${z[@]}" ; do ...
DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot
> В этом случае можно использовать массивы:

А как сделать масив. Т. е. у меня есть программа выдающая последовательно строки, т. е.
~ LIST=`prog`
~ echo $LIST
aaaa asdd
ttt tt
sddas

anonymous
()
Ответ на: комментарий от anonymous
Мне кажется LIST - это и будет массив
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.