我有一个非常简单的bash脚本来计算出现在文件的每一行的数字总和(我知道有这样做的更好的方法,但我实际上需要这个总和作为辅助信息,脚本应该是更多的东西稍后的)。脚本如下:为什么变量值在bash中终止循环后会丢失?
TOTAL=0;
cat $DATAFILE | while read LINE;
do
COUNT=`echo $LINE| awk '{print $2;}'`;
TOTAL=$((TOTAL+COUNT));
done
echo "Total = $TOTAL";
但是,我总是得到输出“Total = 0”。令人惊讶的是,如果我移动while循环内的最后一行,我会得到正确的结果。例如,如果输入文件包含
A 5
B 3
C 6
我得到的输出
Total = 5
Total = 8
Total = 14
但目前的版本总是输出0似乎分配给总变量值莫名其妙丢失。
任何人都可以帮我解决这个问题吗?
在此先感谢
由于在管道完成时管道的右侧会退出,除非您有'shopt -s lastpipe'活动。 – 2014-10-01 14:46:32
[我在管道中的循环中设置变量。为什么它们在循环终止后消失?或者,为什么我不能通过管道数据读取?](http://mywiki.wooledge.org/BashFAQ/024) – fedorqui 2014-10-01 14:49:24