grep -xで使用する方法

grep -xで使用する方法

これは私のコードです。

if grep -x $idle | grep -x $dead | grep -x $busy ./Event.log
 then 
   echo " Events are running Successfully" >> ./Event.log
 else 
   echo "One or more Events are down. Check the log and restart the Events." >> ./Event.log
fi

次のエラーが発生します。

grep: 0652-033 Cannot open 1.
grep: 0652-033 Cannot open 0.
grep: 0652-033 Cannot open 0.

if条件が満たされてもelseブロックに入ります。

誰が私を助けることができますか?

ベストアンサー1

このコマンドgrepには2つのパラメータがあります。模様そして文書。入力がパイプまたはリダイレクトを介して標準入力に接続されている場合は、|このファイルを省略できます<。あなたの例ではそうではないので、最初の人はgrepパターンを見つける場所を知りません。次のように書く必要があります。

grep -x $idle Event.log | grep -x $dead | grep -x $busy

2番目と3番目のgrepsはパイプから読み取られるため、ファイル引数は必要ありません。

しかし、あなたの場合は、3つの代替文字列を見つけるのが良いと思います。したがって、を|使用または使用せずに代替演算子を使用できます。たとえば、次のようになります。grep -E\|-E

if grep -x "$idle\|$dead\|$busy" ./Event.log >/dev/null
    then
    echo " Events are running Successfully" >> ./Event.log
else
    echo "One or more Events are down. Check the log and restart the Events." >> ./Event.log
fi

おすすめ記事