相关疑难解决方法(0)

为什么我的Bash计数器在while循环后重置

我有一个Bash脚本,我想要计算在循环文件时完成了多少事情.计数似乎在循环内工作,但在它之后变量似乎重置.

nKeys=0
cat afile | while read -r line
do
  #...do stuff
  let nKeys=nKeys+1
  # this will print 1,2,..., etc as expected
  echo Done entry $nKeys
done
# PROBLEM: this always prints "... 0 keys"
echo Finished writing $destFile, $nKeys keys
Run Code Online (Sandbox Code Playgroud)

上面的输出是单独的行:

Done entry 1
Done entry 2
Finished writing /blah, 0 keys

我想要的输出是:

Done entry 1
Done entry 2
Finished writing /blah, 2 keys

我不太确定为什么nKeys在循环之后是0 :(我认为这是基本但是该死的,如果我能发现它尽管看了http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html和其他资源.

手指越过别人可以看着它然后"好吧!你必须......"!

bash

15
推荐指数
1
解决办法
8579
查看次数

标签 统计

bash ×1