Скрипт bash, управление процессами с помощью stdin/stdout

Помогите, пожалуйста, посоветовать, как использовать bash для перехвата stdout подпроцесса и отправки символа в stdin подпроцесса.

Например, используйте bash для управления 10 видео, конвертируемыми процессом ffmpeg, код bash должен наблюдать за выводом каждого процесса ffmpeg, а затем решает, отправлять ли команду stdin [+]/[-]/[c]/[q] или другие команды для управления ffmpeg

тайная работа будет что-то вроде

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

только когда [MY_PATTERN] происходит, это задание показывает слово на своем стандартном выводе. Я хотел бы использовать bash-код для перехвата стандартного вывода задания, принять определенное решение в соответствии со строкой, включенной MY_PATTERN, а затем передать команду в стандартный вывод задания. Я думаю, мне нужно активировать новую оболочку с помощью bash, чтобы выполнить задание и взаимодействовать с его stdin/stdout. Но как?

1 ответ

Если я правильно понял вопрос, нужно использовать 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 будет выполнен, как только шаблон будет сопоставлен.

Другие вопросы по тегам