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

Sergey Pinaev =?iso-8859-1?q?dfo_=CE=C1_antex=2Eru?=
Вт Дек 27 11:19:32 MSK 2005


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.

> Но как же всё таки присваивать переменные внутри таких циклов?

Не делать таких циклов.
for n in `cat "$list"`; do ...

-- 
mail="Sergey Pinaev <dfo на antex.ru>"
url="http://`echo $mail | sed 's/.* <\(.*\)@\(.*\)>/\1.\2/'`"



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