【发布时间】:2011-02-15 16:14:50
【问题描述】:
我有一个 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
上面的输出仅是以下几行:
完成条目 1 完成条目 2 写完/blah,0键我想要的输出是:
完成条目 1 完成条目 2 写完/blah,2键我不太确定为什么循环后 nKeys 为 0 :( 我认为这是基本的东西,但如果我能发现它,尽管查看了 http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html 和其他资源,但该死的。
手指交叉的其他人可以看着它并说“好吧,你必须......”!
【问题讨论】:
-
mywiki.wooledge.org/BashFAQ/024">BASH FAQ 条目 #24:“我在循环中设置变量。为什么循环终止后它们会突然消失?或者,为什么我不能通过管道读取数据?”
标签: bash