Завершить процесс после того, как он выдаст определенный результат

Разобрался. Подойдет что-то вроде ISO Master, и вы можете скопировать старую MBR ISO, выполнив

dd if=<original file> of=<modified file> bs=2k count=20

Это копирует первые несколько секторов старого ISO поверх нового, заменяя сгенерированный MBR старым.

0
30.11.2021, 14:11
1 ответ

Один из вариантов — запустить этот инструмент как Process substitutionкоманду grep.

grep -m 1 "Was exported to:" <(<command>)

-m 1говорит grep прекратить работу после первого совпадения, и как только она прекратит работу, команда внутри <(... )также будет уничтожена. Но, на мой взгляд, это немного "уродливый" хак.

Все еще используя grep, но не запуская команду внутри, нужно перенаправить вывод в файл и запустить его в фоновом режиме, а затем прочитать файл с выводом tail -F, grep, и killпроцесс после первого совпадения.

COMMAND > $OUTPUTFILE & tail --pid=$! -n +1 -F $OUTPTFILE | (grep -q -m 1 "Was exported to:" && kill $!)

Параметр --pid=$!должен гарантировать, что tailтакже прекращает выполнение после завершения или уничтожения процесса.

Но и то, и другое будет работать только в том случае, если за строкой, которую вы grepвводите, следует новая строка.

1
30.11.2021, 15:15

Теги

Похожие вопросы