我有这样的代码:
#!/bin/bash
n=0
for file in *.txt
do
tail -c1 $file | read -r _ || (
((n++))
echo "$file is missing a final newline, issue #$n"
)
done
但是当我运行它时,数字不会递增:
a.txt缺少最终换行符,问题#1
b.txt缺少最终换行符,问题#1
我该如何解决这个问题?它看起来像一个范围问题,因为0增加到1,好像忽略了前一个增量。
答案 0 :(得分:1)
嵌套在括号中的命令作为子shell运行,循环中的每个子shell都以n设置在父级别(n = 0)重新开始。
只需将括号更改为花括号(需要终端分号或换行符)。