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