これは私のコードです。
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番目のgrep
sはパイプから読み取られるため、ファイル引数は必要ありません。
しかし、あなたの場合は、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