ループ内でのGrepコマンド実行でエラーが発生する

ループ内でのGrepコマンド実行でエラーが発生する

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

実行は、以下のコードの 6 行目で行われます。7 行目は、実行しようとしているサンプル コマンドを示しています。6 行目をコメントにして 7 行目をコメント解除すると、実行されます。何か単純なことを見逃している可能性があります。ご協力をお願いいたします。これらの変数の値を以下に示します。

ファイル名="' summary_* | wc -l" コマンド="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

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

関連情報