Полезный лайфхак для тех, часто пишет свои bash-скрипты и, особенно, кто только начинает это делать. Ведь если скрипт не работает, то порой сложно определить на каком шаге происходит сбой. Особенно если код скрипта объёмный, то совсем труба. И вот тут есть волшебная строчка! Её нужно добавить после #!/bin/bash и тогда bash-скрипт можно будет отлаживать по шагам.
Вот пример листинга простейшего bash-скрипта с пошаговой отладкой:
trap ‘echo «# $BASH_COMMAND»;read’ DEBUG
echo line1
echo line2
echo line3
Используемые директивы:
- Команда trap умеет перехватывать разные сигналы. В нашем примере она перехватывает сигнал DEBUG, посылаемый перед выполнением команды.
- Команда read умеет ожидать с клавиатуры. У нас это нужно только для того, чтобы отловить нажатие клавиши «Enter»(Ввод) или сочетания Ctrl+C.
- Переменная окружения $BASH_COMMAND — используется внутри обработчика команды trap.
Процесс отладки скрипта:
Запускаем скрипт. Перед выполнением каждой команды выведено то, что будет исполняться, после чего интерпретатор начинает ожидать нажатия клавиши «Enter»(Ввод).
Если мы приходим к выводу, что на каком-то этапе что-то пошло не по сценарию и выполняется не так, как нужно — нажимаем Ctrl+C и таким образом выходим из отладки.