【发布时间】:2014-03-31 10:03:29
【问题描述】:
我正在尝试做一个简单的 bash 脚本来在一组文件夹中的每个文件中执行一些操作。我也喜欢统计脚本读取了多少文件,但是当脚本通过循环时,数值变量会被重置。
我使用的代码是这样的
#!/bin/bash
let AUX=0
find . -type "f" -name "*.mp3" | while read FILE; do
### DO SOMETHING with $FILE###
let AUX=AUX+1
echo $AUX
done
echo $AUX
我可以看到 AUX 在循环内计数,但最后一个“echo”打印一个 0,并且变量似乎真的被重置了。我的控制台输出是这样的
...
$ 865
$ 866
$ 867
$ 868
$ 0
我想在 AUX 中保留已处理的文件数。有什么想法吗?
【问题讨论】:
-
这是 BashFAQ #24:mywiki.wooledge.org/BashFAQ/024
-
...此外,作为与最佳实践相关的一项措施,对既不导出到环境也不导出到 shell 内置的变量名使用小写字母会更安全;这样你就可以避免命名冲突。
标签: bash loops while-loop