Короткий ответ set -e останавливает скрипт при первой команде с ненулевым кодом возврата, -u превращает обращение к неопределённой переменной в ошибку, а -o pipefail делает так, чтобы пайплайн из нескольких команд считался упавшим, если упала любая команда в цепочке, а не только последняя. Как это работает подробнее по умолчанию bash продолжает выполнение после неудачной команды и использует неопределённые переменные как пустые строки, а код возврата пайплайна cmd1 | cmd2 равен коду возврата только cmd2. Эти три флага меняют поведение на более строгое и предсказуемое. Пример кода Что использовать на практике Рекомендация. флаги стоит добавлять почти в каждый продакшен-скрипт, но помнить про исключения — например, set -e не срабатывает внутри условий (if cmd; then) и внутри &&/||, поэтому проверку кода возврата важных шагов иногда нужно делать явно через if ! deploy; then handle_error; fi. Подводные камни Ошибка. добавлять флаги "для галочки", не проверяя, что скрипт действительно останавливается там, где нужн