LINUX.ORG.RU

Область действия переменных в bash


0

0

Есть такой код:

#!/bin/bash

V1=0
cat file | while read s
do
    V1=$(($V1+$s))
    echo $V1
done
echo V1

При работе echo из цикла выдает накапливающуюся сумма, а echo снаружи цикла выдает 0. :(

Как реализовать этот цикл по умному что-бы результаты вычесленные внутри цикла было видно после его завершения?

По всей видимости bash запускает новый процесс для " | while read...". И, естественно, его переменные умирают вместе с ним.

while read ; do ... done <file

будет работать. Или

V1=$(cat file | while read s ; do V1=$((V1+s)) ; done ; echo $V1)

DonkeyHot ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.