文件如下:
test
1
2
3
4
5
使用命令
- wc -l test
输出结果为
5 test
使用管道符计算文件行数脚本如下:
- #!/bin/sh
- linenum=0
- cat test | while read line
- do
- echo "line content: $line"
- ((linenum+=1))
- done
- echo "line number: $linenum"
输出结果为
line content: 1
line content: 2
line content: 3
line content: 4
line content: 5
line number: 0
使用重定向计算文件函数脚本如下:
- #!/bin/sh
- linenum=0
- while read line
- do
- echo "line content: $line"
- ((linenum+=1))
- done < test
- echo "line number: $linenum"
输出结果为
line content: 1
line content: 2
line content: 3
line content: 4
line content: 5
line number: 5
分析结果:
使用管道符时,会fork出一个子进程,变量在父子进程里无法互通。使用第二种方式,在同一个进程中,所以达到了我们预期的目的。