日期:2014-05-16  浏览次数:20570 次

询问一个简单的循环累加的问题
linux bash

count=0
cat xxxx.log | grep xxx | while read LINE
do
  count=$((count+1))
  echo $count
done

这里可以看到count的值在累加,但我只要最后一个值即可。
问题是我把echo $count写到循环外面(done的下面)count的值却无论如何都为0

------解决方案--------------------
你使用了管道,开辟了一个新的shell进程,这个进程对变量的修改不会反映到外层

如果只是简单的统计关键字数目,可以这样:
grep -c xxx xxxx.log