# Включить обработку ошибок в скриптах
set -euo pipefail
-e — останов скрипта при ошибке выполнения команды
-u — необъявленная переменная считается ошибкой. Иначе возвращает пустое значение
-o pipefail — включает отслеживание ошибок в пайпах. Иначе вернет статус последней команды.
# Параллельное выполнение с отловом ошибок
# Параллельный запуск задач
{ command1 } & PID1=$!
{ command2 } & PID2=$!
{ command3 } & PID3=$!
# Ожидание завершения процессов с отловом ошибок
if wait $PID1 && wait $PID2 && wait $PID3
then
echo "All commands success"
else
echo "Something FAIL"
exit 1
fi
# Дождаться полного завершения. Сюда попадем если первая или вторая команда выдаст ошибку. В этом случае завершения третьей команды IF дожидаться не будет.
wait