set -e в bash может сломать тебе всё!Привет, терминальный заклинатель! Кажется, ты добавил
set -e в свой bash-скрипт и думал, что теперь ошибки сами себя поймают? А потом скрипт резко перестал доходить до конца?.. Давай разберемся, в чём подвох.🤔 Что вообще делает
set -e?set -e говорит интерпретатору bash: > "Если любая команда завершится ошибкой, — останови скрипт немедленно".
Это полезно для CI/CD, бэкапов и всего, что не прощает ошибок. Но...
⚠️ Проблема: поведение
set -e — неочевидно!Вот типичный случай:
#!/bin/bash
set -e
false
echo "Я не выполнюсь!"
Скрипт завершится после
false, и echo даже не запустится. Всё логично. Но теперь внимание:
#!/bin/bash
set -e
if false; then
echo "Упс"
fi
echo "А вот и я!"
🎉 Здесь
echo выполнится! Потому что ошибки внутри if, while, until и &&/|| — игнорируются!🔍 Когда
set -e может навредить?Если ты используешь команды вроде:
grep "что-то" файл.txt || echo "не найдено"
Скрипт продолжит работу, даже если
grep вернёт ненулевой код. Но теперь представь, что ты этого не знал… 😬✅ Как правильно использовать
set -e?1. Сначала — пойми, где оно действительно нужно (например, в CI/CD, деплое, тестах).
2. Используй его в отдельных функциях, а не во всём скрипте сразу.
3. Если обрабатываешь ошибку вручную — используй
||, if, trap, set +e.👨💻 Итог:
set -e — не волшебная палочка. Это строгий сторож, который иногда рубит по-живому. Используй с умом, тестируй поведение и знай, где он тебя может подставить.🌳 Ветка: https://stackoverflow.com/questions/19622198/what-does-set-e-mean-in-a-bash-script
📩 Завтра: BTRFS: Продвинутые техники для настоящих гуру!
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 -Настрой мониторинг сети в реальном времени с Prometheus и Grafana
🧠 - b2-tools — простое и быстрое резервное копирование в облако
🧠 - Ты не знал, что cat умеет это! Лайфхаки для работы с файлами в Linux
#stackoverflow @LinuxSkill #bash #linux #скрипты #автоматизация #devops #linuxskill #сетевые_лайфхаки #shell #ci_cd #ошибки