ループ内で Grep コマンドを実行するとエラーが発生します。

ループ内で Grep コマンドを実行するとエラーが発生します。

ユーザーが提供した時間範囲に基づいてログファイルセットの行数を数える小さなプログラムを作成しようとしています。現在の最後のステップにあり、何らかの理由でプログラムを実行すると、次のエラーで失敗します。 grep: |: そのファイルまたはディレクトリはありません。 grep: wc: そのファイルまたはディレクトリはありません。

実行は、以下のコードの6行目で発生します。行7は、私が実行しようとしたサンプルコマンドを示しています。 6行をコメントアウトし、7行のコメントを削除すると実行されます。簡単なものが欠けているかもしれません。助けてくれてありがとう。これらの変数の値は次のとおりです。

filename="'summary_* | wc -l" command="grep'" comm=ived>20161215110

1 for (( z=0; z<($interval/10); z++ ))
2 do
3       comm=$tempCommand$count
4       let "count = $count + 1"                                
5       #echo "$command$comm$fileName"
6       totalCount=`$command$comm$fileName`
7       #totalCount=`grep 'ived>20161215110' summary_* | wc -l`
8       echo $totalCount
9 done

ベストアンサー1

シェルは|解析の開始時にメタ文字を認識します。変数値が拡張されると、すでに遅すぎて|文字通り垂直バーのように動作します。つまり、以下を実行するのと同じです。

grep 'ived>20161215110' summary_* \| wc -l

変数の代わりに関数を使用できます。

おすすめ記事