4

(bash で) 特定の文字列が発生したときに、コマンド ライン プログラムの出力とフラグを監視することは可能ですか?

基本的に私の問題は、コンソールに大量の出力を生成する大規模なビルド スクリプトがあることです。コンソールで「エラー」という単語を確認してから、何らかの方法で警告したいと思います。

次に、残りのプロセスを監視する/キャンセルすることを知っています。

4

3 に答える 3

5

コマンドラインから次のように試してください。

<YOUR_BUILD_CMD> | grep ERROR

出力時にERRORのみを<YOUR_BUILD_CMD>出力します。これ|パイプ演算子であり、ここではgrepコマンドの手動です。

于 2013-01-09T12:47:29.317 に答える
5

文字列に対しては可能grepですが、makeの元の出力を保存する必要があります。これは、を使用して実行できますtee。エラーが発生するとすぐにmplayerを使用してサウンドファイルを再生する例:

make 2>&1 | tee make.log | grep -lq ERROR && mplayer alert.wav
于 2013-01-09T12:50:55.293 に答える
0

これを while ループにパイプして、出力の各行をチェックします。例えば

cmd &| while read line;do if [[ ${line} =~ ErrorRegex ]];then echo Error Detected: $line; else echo $line; fi;done

「&|」で分解するには stderr と stdout を、一度に 1 行の入力を読み取り、それを line 変数に入れる while ループにリダイレクトします。次に、単純な正規表現の比較でエラー文字列を探し、その行を強調表示したり、好きな場所にログを記録したりできます。エラーと一致しない場合は、出力を通常どおりに出力します。

于 2013-01-09T13:20:19.690 に答える