>do
>{
> SUM=$(($SUM+$COUNTER))
> echo "debug sum=$SUM" Вставь тут ps -AH>файл , например, и с удивлением узнай, что для пайпов (те, что |) пускается отдельный процесс баша...
>}
>done
>Как сделать чтобы значение SUM было равно значению, которое было записано в
>sum внутри цикла?
С отдельным процессом разве что через SUM="` cat ...|while read ... echo "$SUM"; done|tail -1`"...
>Чтобы за пределами цикла echo "sum=$SUM" выдавало посчитанную внутри цикла сумму, а
>не ноль.
Я сам не знал как. :)) Сейчас "капнул" и сделал -- ура. :D
#!/bin/bash
SUM=0
while read COUNTER
do
{
SUM=$((SUM+COUNTER))
echo "debug sum=$SUM"
}
done < <(echo "1000")
echo "sum=$SUM"
Для защиты невиновных cat был заменён на echo. B)
А для избавления от второго процесса в while - пайп заменён на FIFO.