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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.