bash脚本,用stdin / stdout控制进程

时间:2013-10-03 07:15:46

标签: bash shell process-control

请帮忙建议如何使用bash来捕获子进程的stdout并将字符发送到子进程的stdin。

例如,使用bash控制10个视频转换为ffmpeg进程,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代码来捕获作业的标准输出,根据包含MY_PATTERN的行执行一些决定,然后将命令输入到作业的标准输入。 我想我需要通过bash激活新的shell来执行作业并交互其stdin / stdout。但是如何?

1 个答案:

答案 0 :(得分: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将在模式匹配后立即执行。