2017-12-17 9 views
-3

エラーがなければ終了しないcmdがあります。このコマンドは文字列を出力し、別のコマンドをキャプチャして、これらの出力ごとに異なるコマンドを実行します。単一の非終了コマンドの複数の出力に対して異なるコマンドをgrepして実行する方法

私は1つの出力($str1)と1つの特定のコマンド($cmd1)のためのコマンドを処理する方法を知っている:

until cmd | grep -m 1 "$str1"; do; $cmd1; doneが、私は$str2$cmd2などを持ってできるようにしたい...

+0

はです生成 'str1'正規表現か文字列か?そして、 'cmd1'は単純なコマンドですか? –

+0

ULの投稿は今すぐ終了しました。 – tripleee

答えて

1

このようなものはありますか? OPは、ここに任意の詳細を提供する文字列のストリームを生成し、エラーで終了し作らプロセスではありませんでしたので、

cmd | while read -r line; 
do 
    case "$line" in 
    str1) echo "do something" 
    ;; 
    str2) echo "do something else" 
    ;; 
    *) echo "ignore" 
    ;; 
    esac; 
done 

$ (for i in {1..5}; do sleep 1; echo "this is str$i"; done; exit 1) | 
    while read -r line; 
    do  
    case "$line" in  
     *str1*) echo "do something" 
     ;;  
     *str2*) echo "do something else" 
     ;;  
     *) echo "ignore" 
     ;; 
    esac; 
    done 

do something 
do something else 
ignore 
ignore 
ignore 
+0

'$ line'をエコーし​​て出力しているものと一致しない場合... – maxisme

+0

一部の出力のみ – maxisme

関連する問題