[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