(bash で) 特定の文字列が発生したときに、コマンド ライン プログラムの出力とフラグを監視することは可能ですか?
基本的に私の問題は、コンソールに大量の出力を生成する大規模なビルド スクリプトがあることです。コンソールで「エラー」という単語を確認してから、何らかの方法で警告したいと思います。
次に、残りのプロセスを監視する/キャンセルすることを知っています。
(bash で) 特定の文字列が発生したときに、コマンド ライン プログラムの出力とフラグを監視することは可能ですか?
基本的に私の問題は、コンソールに大量の出力を生成する大規模なビルド スクリプトがあることです。コンソールで「エラー」という単語を確認してから、何らかの方法で警告したいと思います。
次に、残りのプロセスを監視する/キャンセルすることを知っています。
コマンドラインから次のように試してください。
<YOUR_BUILD_CMD> | grep ERROR
出力時にERRORのみを<YOUR_BUILD_CMD>
出力します。これ|
はパイプ演算子であり、ここではgrepコマンドの手動です。
文字列に対しては可能grep
ですが、makeの元の出力を保存する必要があります。これは、を使用して実行できますtee
。エラーが発生するとすぐにmplayerを使用してサウンドファイルを再生する例:
make 2>&1 | tee make.log | grep -lq ERROR && mplayer alert.wav
これを while ループにパイプして、出力の各行をチェックします。例えば
cmd &| while read line;do if [[ ${line} =~ ErrorRegex ]];then echo Error Detected: $line; else echo $line; fi;done
「&|」で分解するには stderr と stdout を、一度に 1 行の入力を読み取り、それを line 変数に入れる while ループにリダイレクトします。次に、単純な正規表現の比較でエラー文字列を探し、その行を強調表示したり、好きな場所にログを記録したりできます。エラーと一致しない場合は、出力を通常どおりに出力します。