Shell逐行处理文本求和,我傻了。。转载本文请联系编程诸暨公众号。假设你要计算文本test.data第二列数字的总和:112223334456当然你可以这样做:awk'{s+=$2}END{prints}'test.data很快就会得到结果。不过,本文要说的要点与awk无关。我们用另一种方式计算,即逐行分析处理的方式。尝试1先试试第一种方法,shell实现如下:#!/usr/bin/envbashsum=0cattest.data|whilereadlinedotemp_num=$(echo"$line"|cut-d''-f2)sum=$(($sum+$temp_num))doneecho"wegetsum:$sum"输出结果:wegetsum:0这是为什么呢!为什么结果是0?这是不好的,因为脚本|,众所周知,这是一个管道命令,而且这也意味着while循环的执行结果都在一个子shell中。一旦subsell退出,其中的结果将消失。其实这个问题用本文提到的工具很容易发现:$shellcheckmyscriptLine3:cattest.data|whilereadline^--SC2002:Uselesscat.Consider'cmd
