我无法更改管道右侧的line_count值,为什么?

时间:2014-11-18 10:40:51

标签: bash

我遇到了一个问题,我无法找到它为什么会运行。 以下代码用于计算文件行' file.in' ,但第一个不能改变$line_count

的值

第一个代码是:

#!/bin/bash
line_count=0
cat file.in | while read line; do 
    let ++line_count 
done 
echo $line_count

第二个代码是:

#!/bin/bash
line_count=0

while read line; do 
  let ++line_count
done < file.in

echo $line_count

每个答案都会有所帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

由于使用了管道,您的第一个代码示例正在子shell中执行while loop,因此在子shell退出后,line_count变量中的更改会丢失。