[devel] О присваивании переменных в циклах на bash

Vitaly Lipatov =?iso-8859-1?q?lav_=CE=C1_altlinux=2Eru?=
Вт Дек 27 11:30:50 MSK 2005


On Tuesday 27 December 2005 11:19, Sergey Pinaev wrote:
> On Tue, 27 Dec 2005 11:07:35 +0300
>
> Vitaly Lipatov <lav на altlinux.ru> wrote:
> > Вот и не угадали - выведен она
>
> Зачем угадывать? С | спавнится новый шелл.
>
> > В /usr/bin/sisyphus_relink наблюдаем такой код:
> >     cat "$list" |while read n; do
> >         f="files/$rfiles/$n"
> >         [ -f "$f" ] || continue
> >         $debug ln -s $verbose "$r/$n" "$d/" || rc=1
> >     done
> >     return $rc
> >
> > получается rc тоже не присвоится и в коде ошибка?
>
> Да, в родительском шелле rc будет не тот, который был
> в шелле, исполняющем while.
То есть вешаем баг на
/usr/bin/sisyphus_relink
>
> > Но как же всё таки присваивать переменные внутри таких
> > циклов?
>
> Не делать таких циклов.
> for n in `cat "$list"`; do ...
Дело в том что задача такова:
читать из файла, содержащего несколько значений в строке через 
пробел (а это наиболее удобно через read), а for позволит только 
одним значением оперировать (или ему можно разделитель 
поменять?)

-- 
Lav
Виталий Липатов
Санкт-Петербург
GNU! ALT Linux Team! WINE! LaTeX! LyX! http://freesource.info



Подробная информация о списке рассылки Devel