Памятки по bash

# Включить обработку ошибок в скриптах

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