У меня есть сценарий CI, который я хочу ускорить, запустив несколько вещей в фоновом режиме. Я хочу, чтобы сценарий ждал всех процессов и проверял каждый, чтобы узнать, не сработало ли оно.Возможно ли несколько команд в фоновом режиме, но ждать всех результатов и сбой сценария при неудачной команде.
Здесь упрощение:
#!/bin/bash
set -e
bg()
{
sleep .$[ ($RANDOM % 10) + 1 ]s
}
bg2()
{
sleep .$[ ($RANDOM % 10) + 1 ]s
exit 1
}
bg & # will pass after a random delay
bg2 & # will fail after a random delay
# I want the output of the program to be a failure since bg2 fails
Что делает ' "$!" 'делать в первой команде ожидания? – Robert
@Robert: получить идентификатор процесса фонового задания, отличное от нуля целое число, которое передается как аргумент команды wait. – Inian
Отсутствует важный аспект исходного вопроса: сбой при сбое фонового задания. Ожидание нескольких фоновых процессов теряет информацию об их статусе выхода; вам нужно ждать отдельных заданий, чтобы увидеть, удастся ли им выполнить или не удается. – chepner