无法在bash中增加变量。范围错误?句法?

时间:2016-07-11 00:37:06

标签: bash

我已经在这个问题上阅读了十几个解决方案帖子,但我的问题仍然存在。为什么我不能在代码中增加HITSMISSES变量?我无法看到错误:

MISSES=0
HITS=0
for fName in *.dat; do (
    if grep -q "hit" "$fName"; then 
        echo "$fName hit";
        ((HITS++));
        else
        echo "$fName miss";
        ((MISSES++));
        fi;
    );done

我刚开始熟悉bash,所以到目前为止我知之甚少。

2 个答案:

答案 0 :(得分:2)

(...)在子shell中运行其内容,这意味着子shell退出后子shell中变量的任何更改都不可见。你可以省略它们:

for fName in *.dat; do
  if grep -q hit "$fName"; then
    echo "$fName hit"
    ((HITS++))
  else
    echo "$fName miss"
    ((MISSES++))
  fi
done

答案 1 :(得分:1)

也许你可以尝试类似的东西: HITS = $(($ HITS + 1));