bash不增加反击

时间:2011-11-25 10:44:11

标签: bash counter assign

好吧,我只是不知道发生了什么,我的grep结果计数器曾经工作过 似乎无论我做什么,都不计算我的结果,并坚持下去 初始值为0,在启动它的脚本的第一行:

  

使用totalResults = 0

即使我以这种方式定义它:

  

排版-i TotalResults = 0

它不起作用,那是while循环,其中计数器应该增长,它实际上正在执行其他命令,它正在做printf的东西,但只是没有增加计数器,我用echo检查它,当我想要使用它,它保持在0!

  

export URL =“$ CurrentURL”

     

grep -n -o -a $ ExpressionValue $ INDEX |读线;做

      printf "%s\t%s" "${URL} ${line}"
      printf "\n"
      let TotalResults+=1
     

完成

有什么问题?我有其他计数器定义相同,他工作得很好,我已经厌倦了,请帮助。

2 个答案:

答案 0 :(得分:2)

在|后面的子shell中递增计数器。该变量在父shell中不会更改。将您的代码更改为

while read line ; do

      printf "%s\t%s" "${URL} ${line}"
      printf "\n"
      let TotalResults+=1

done < <(grep -n -o -a $ExpressionValue $INDEX)

答案 1 :(得分:0)

我建议使用c风格的计数器,因为代码变得更易读并且工作更快:

while read line ; do

      printf "%s\t%s" "${URL} ${line}"
      printf "\n"
      (( ++TotalResults))

done < <(grep -n -o -a $ExpressionValue $INDEX)