0

请帮助建议如何使用 bash 捕获子进程的标准输出并将字符发送到子进程的标准输入。

比如用bash控制ffmpeg进程转换的10个视频,bash代码需要观察每个ffmpeg进程的stdout然后决定是否发送stdin命令///[+]或者[-]其他命令来控制ffmpeg[c][q]

秘密工作就像

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

仅当 [MY_PATTERN] 发生时,此作业才会在其标准输出上显示单词。我想使用 bash 代码来捕获作业的标准输出,根据包含 MY_PATTERN 的行做一些决定,然后将命令输入到作业的标准输入中。我想我需要通过 bash 激活新的 shell 来执行作业并交互它的标准输入/标准输出。但是怎么做?

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 回答