【发布时间】:2014-11-26 10:49:16
【问题描述】:
我有一个非常简单的 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。分配给变量 TOTAL 的值似乎丢失了。
谁能帮我解决这个问题?
提前致谢
【问题讨论】:
-
因为管道完成后管道的右侧会退出,除非您有
shopt -s lastpipe处于活动状态。
标签: bash