👁 В сложных Bash-скриптах часто возникает необходимость отслеживать ошибки и записывать вывод в файл для последующего анализа. В этом случае можно использовать trap для перехвата ошибок и tee для записи как в файл, так и в терминал. Это позволяет оперативно отлаживать скрипты и сохранять логи для анализа без вмешательства пользователя.
📝 Пример перехвата ошибок и записи вывода:
#!/bin/bash
logfile="script.log"
# Установим trap для перехвата ошибок
trap 'echo "Ошибка на строке $LINENO" | tee -a $logfile' ERR
# Функция для демонстрации ошибки
demo_function() {
echo "Start processing"
# Здесь будет ошибка
undefined_command
echo "End processing"
}
# Запуск функции и запись логов
echo "Запуск скрипта..." | tee -a $logfile
demo_function
echo "Скрипт завершён" | tee -a $logfile
📌 Как это работает:
trapловит все ошибки (код возврата ненулевой) и выводит сообщение о месте возникновения ошибки в логteeпозволяет одновременно выводить сообщения в терминал и записывать их в файл, что помогает не пропустить важную информацию- Запуск функции
demo_functionвызывает ошибку, которая перехватывается и логируется в файл
❗️ Этот метод полезен для сложных сценариев, где важно контролировать выполнение скриптов и логировать ошибки в реальном времени, например, при автоматизации процессов, CI/CD или администрировании серверов.
tags: #bash #логирование



