递增变量时Bash范围问题(?)

时间:2016-05-10 18:45:47

标签: bash scope increment

我有这样的代码:

#!/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,好像忽略了前一个增量。

1 个答案:

答案 0 :(得分:1)

嵌套在括号中的命令作为子shell运行,循环中的每个子shell都以n设置在父级别(n = 0)重新开始。

只需将括号更改为花括号(需要终端分号或换行符)。