Pomóż nam doradzić, jak używać basha do przechwytywania stdout podprocesu i wysłać znak do standardowego procesu.
Na przykład, użyj bash, aby kontrolować 10 filmów konwertowanych przez proces ffmpeg, kod bash musi oglądać każdy proces ffmpeg. [+]
/[-]
/[c]
/[q]
lub inne polecenie do sterowania ffmpeg
ukryta praca byłaby czymś w rodzaju
ffmpeg -i INPUT_n -c copy -f flv out_n.flv 2>&1 | grep "[MY_PATTERN]"
tylko wtedy, gdy pojawia się [MY_PATTERN], to zadanie pokazuje słowona tym stdout. Chciałbym użyć kodu bash do przechwytywania stdout zadania, wykonaj decyzję zgodnie z linią zawartą w MY_PATTERN, a następnie podaj polecenie do standardowego zadania. Myślę, że muszę aktywować nową powłokę przez bash, aby wykonać zadanie i współdziałać z jego standardowym / standardowym wyjściem. Ale jak?
Odpowiedzi:
0 dla odpowiedzi № 1Jeśli dobrze zrozumiałem pytanie, musisz użyć grep -q "MY_PATTERN"
. To by wysłało SIGPIPE
do ffmpeg
proces, gdy tylko wzór zostanie dopasowany.
Poniższe powinny działać dla Ciebie:
ffmpeg -i INPUT_n -c copy -f flv out_n.flv 2>&1 | grep -q "[MY_PATTERN]" && some_command
some_command
zostanie wykonane, gdy tylko wzór zostanie dopasowany.