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

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


Простая программа:

TEST=orig
for i in first ; do
        TEST=new
done
echo $TEST

Какое слово она выведет? Конечно же
new


А вот эта?
TEST=orig
echo first | while read i ; do
        echo "HEHE"
        TEST=new
done
echo $TEST

Вот и не угадали - выведен она 
HEHE
orig


В /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 тоже не присвоится и в коде ошибка?

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

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



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