LINUX.ORG.RU
ФорумAdmin

bash, for и строки...


0

0

Переменная $C содержит текст.
Как пройтись по строчкам в цикле for? Нужны именно строки а не слова. Например, в примере:

for A IN $C;
do
done

Переменной $A будет присваиваться слово из текста $C, а мне в переменной $A нужна строка текста. Как быть?

Спасибо.

anonymous

Ответ на: комментарий от marten

Пробовал, в $A тогда содержится весь текст из $C.

anonymous
()
Ответ на: комментарий от spirit

Спасибо, попробую... for не обязательно.

anonymous
()

Изменить значение переменной IFS, 
чтобы она содержала только перевод строки:


# A=$'aaaa\nffff\nrrr trt fg'        --- исходная строка
# echo "$A"
aaaa
ffff
rrr trt fg
# for i in $A ; do echo $i; done     --- так по умолчанию
aaaa
ffff
rrr
trt
fg
# IFS=$'\n'
# for i in $A ; do echo $i; done     --- так требуемый результат
aaaa
ffff
rrr trt fg


А потом поставить обратно:

# IFS=$' \n\t'
[root@hmky root]# for i in $A ; do echo $i; done
aaaa
ffff
rrr
trt
fg




P.S. Это тема, вроде, в Development просится, а не в Admin.

P.P.S. А с примером "echo $C | while read A; do ...; done" надо
острожнее, запросто, что while цикл будет выполнятся в отдельном
процессе (subshell)...

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.