0

何が起こったのかわからないのですが、grepの結果カウンターは以前は機能していましたが、今では、何をしても結果をカウントせず、開始するスクリプトの最初の行で初期値の0のままになっているようです。それ:

TotalResults = 0

私がそのように定義したとしても:

タイプセット-iTotalResults= 0

それは機能しません、それはその中でカウンターが成長するはずのwhileループであり、実際に他のコマンドを実行します、それはprintfのことを実行していますが、カウンターを増やすだけではありません、私はエコーでそれをチェックしましたそして私がそれを使いたいときも、0のままです!

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

grep -n -o -a $ ExpressionValue $ INDEX | 行を読んでいる間; 行う

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

終わり

何が問題ですか?私は同じことを定義した他のカウンターを持っています、そして彼はうまく働いています、私はそれにうんざりしています、助けてください。

4

2 に答える 2

2

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

while read line ; do

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

done < <(grep -n -o -a $ExpressionValue $INDEX)
于 2011-11-25T10:46:49.927 に答える
0

コードが読みやすくなり、動作が速くなるため、cスタイルでcounterを使用することをお勧めします。

while read line ; do

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

done < <(grep -n -o -a $ExpressionValue $INDEX)
于 2011-11-26T08:27:03.730 に答える