0

bash を使用してサブプロセスの stdout をキャッチし、文字をサブプロセスの stdin に送信する方法をアドバイスしてください。

たとえば、bash を使用して、ffmpeg プロセスによって変換された 10 個のビデオを制御します。bash コードは、各 ffmpeg プロセスの stdout を監視する必要があり、stdin コマンドを送信するかどうかを決定します[+]/ [-]/ [c]/ [q]ffmpeg を制御するその他のコマンド

秘密の仕事は次のようなものになります

ffmpeg -i INPUT_n -c copy -f flv out_n.flv 2>&1 | grep "[MY_PATTERN]"

[MY_PATTERN] が発生した場合にのみ、このジョブは stdout に単語を表示します。bashコードを使用してジョブのstdoutをキャッチし、MY_PATTERNに含まれる行に従って決定を行い、コマンドをジョブのstdinに送りたいと思います。ジョブを実行し、stdin/stdout とやり取りするには、bash で新しいシェルをアクティブにする必要があると思います。しかし、どのように?

4

1 に答える 1

0

私が質問を正しく理解した場合は、 を使用する必要がありますgrep -q "MY_PATTERN"。これにより、パターンが一致するとすぐにプロセスにSIGPIPE送信されます。ffmpeg

以下はあなたのために働くはずです:

ffmpeg -i INPUT_n -c copy -f flv out_n.flv 2>&1 | grep -q "[MY_PATTERN]" && some_command

some_commandパターンが一致するとすぐに実行されます。

于 2013-10-03T07:54:31.713 に答える