繁体   English   中英

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

[英]Bash scope issue (?) when incrementing variable

我有这样的代码:

#!/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,就像之前的增量被忽略一样。

您在括号之间嵌入的命令作为子外壳程序运行,循环中的每个子外壳程序都以父级别(n = 0)设置的n值重新开始。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM