我正在尝试编写一个简单的 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 中保留已处理的文件数。任何想法?
不要使用管道,它会创建一个子 shell。下面的例子。
#!/bin/bash
declare -i AUX=0
while IFS='' read -r -d '' file; do
### DO SOMETHING with $file###
(( ++AUX ))
echo $AUX
done < <(find . -type "f" -name "*.mp3")
echo $AUX
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)