bashカウンタを増やさない

まあ、私はちょうど何が起こったのか知りません、私のgrep結果のカウンターは今働いていた 私は何をしても結果を数えずに スクリプトの最初の行に初期値0が設定されています。

TotalResults = 0

たとえ私がそれをそのように定義していても:

typeset -i TotalResults = 0

それは動作しません、それはカウンタが成長し、実際に他のコマンドを実行しているwhileループです。それはprintfのことをしていますが、カウンタを増やさないで、エコーでチェックしました。それは0のままです!

エクスポートURL = "$ CurrentURL"

     

grep -n -o -a $ ExpressionValue $ INDEX |一方、読取りライン。行う

  printf "%s \ t%s" "$ {URL} $ {行}"
      printf "\ n"
      let TotalResults + = 1とする
 
     

完了

何が問題ですか?私は同じ定義の他のカウンターを持っており、彼は素晴らしい仕事をしています。私はそれに疲れています。助けてください。

0

2 答え

|の後ろのサブシェルでカウンタをインクリメントしています。変数は親シェルでは変更されません。コードを次のように変更してください

while read line ; do

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

done < <(grep -n -o -a $ExpressionValue $INDEX)
2
追加された
それは今実際には素晴らしい、ありがとう!
追加された 著者 k-man,

コードが読みやすくなり、より速く動作するように、私はCスタイルでカウンタを使うことを提案します:

while read line ; do

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

done < <(grep -n -o -a $ExpressionValue $INDEX)
0
追加された