/ / skrypt bash, procesy sterujące za pomocą stdin / stdout - bash, shell, kontrola procesu

skrypt bash, kontrola procesów z stdin / stdout - bash, shell, process-control

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 № 1

Jeś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.