下面两段代码
第一段,无法正确统计文件行数,count在循环中的计算,出了循环就无效了
第二段,count2出了循环依然有效
初学shell,不太明白这是为什么,希望大家指点一下
ps:第一段代码应该如何修改,才能达到第二段的效果
[code="bash"]
#!/bin/bash
count=0
cat "$1" | while read line
do
count=$[ $count + 1 ]
done
echo "$count line(s) in all."
#-----------------------------------------
count2=0;
for var in a b c
do
count2=$[ $count2 + 1 ]
done
echo "$count2 line(s) in all."
[/code]
shell 在管道中改变变量是无效的 有很多方法可以做到 比如wc 当然你如果硬要用while
改成这样
[code="bash"]
1.#!/bin/bash
2.count=0
3.
4.while read line
5.do
6. count=$[ $count + 1 ]
7.done < file
8.
9.echo "$count line(s) in all."
[/code]
具体可以查看:http://sumit.blog.51cto.com/162317/271554
http://bbs.chinaunix.net/thread-1661629-1-1.html
http://zhidao.baidu.com/link?url=mXrgoibdctnZBoEgdFPt49sa4yTgtaQuexvZS28ZH293W3nww5wIoF7Nj3M9g3fr8OxiiyHCBljAfiwWH1v6ka
http://linux.sheup.com/linux/linux5525.htm
http://www.linuxidc.com/Linux/2011-04/34889.htm
http://blog.csdn.net/astraylinux/article/details/7280906
http://xuyongtao630.blog.163.com/blog/static/8618328320115276915626/