【发布时间】:2014-09-16 10:45:27
【问题描述】:
我有一个这样的 shell 脚本,我正在读取一个文件并计算行号。 我从 processesNumber 函数内部得到了 1,2,3,4.. 等日志
#!/bin/bash
number=0;
processNumber () {
((number++));
echo "$number";
}
grep -E '*' readme.txt | while read -r line ; do
processNumber "$line";
done;
echo "And at last $number";
但它会记录
"And at last 0" ,但我期待最后一个行号。
为什么会这样?是不是因为 gres 通过异步调用读取文件,因此 echo 必须是对其的回调。
或者是函数外无法跟踪全局变量的变化?
如何在不更改 grep 和管道的情况下解决此问题?
注意:我的目标不是找到文件中的行数,而是要理解这一点
【问题讨论】: