Запустить команду bash после нескольких одновременных команд?

Однострочник Perl спешит на помощь:

perl -i -pe'$_="FIRST LINE\n$_"if$.<2;$.=0,$_.="LAST LINE\n"if eof' *.txt
13
05.05.2017, 23:47
2 ответа

Мне нравится ответ wait, но в качестве академического упражнения я думаю, что это также сработает:

bash -c 'command1 & command2 & command3 &' && command4

Пожалуйста, поправьте меня, если я ошибаюсь.

0
27.01.2020, 19:52
#!/bin/bash
command1 &
command2 &
command3 &

wait
command4

wait (без каких-либо аргументов) будет ждать завершения всех фоновых процессов.

Полное описание wait в руководстве bash:

wait [-n] [n ...]

Ожидание каждого указанного дочернего процесса и возврат его прекращение статус. Каждый n может быть идентификатором процесса или спецификацией задания; если дана спецификация задания, все процессы в конвейере этого задания ждать кого-либо. Если n не указано, все активные дочерние элементы процессы ожидаются, а статус возврата равен нулю. Если Опция -n предоставляется, wait ожидает завершения любого задания и возвращает свой статус выхода. Если n указывает несуществующий процесс или задание, статус возврата — 127. В противном случае статус возврата это статус выхода последнего ожидаемого процесса или задания.

28
27.01.2020, 19:52

Теги

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