bash:отладка_bash_скриптов_по_шагам
Отладка bash скриптов по шагам
Чтобы произвести отладку скрипта в пошаговом режиме, после <html>#!/bin/bash</html>, добавим вот такую строку:
#!/bin/bash trap 'echo "# $BASH_COMMAND";read' DEBUG echo line1 echo line2 echo line3
Процесс отладки
Запускаем скрипт, перед выполнением каждой команды выводится то, что будет исполняться, затем интерпретатор начинает ожидать нажатия клавиши <html><ENTER></html>.
Если понимаем, что что-то пошло не так, нажимаем <html>Ctrl+C</html> и выходим из отладки.
Ингредиенты:
- команда trap, умеет перехватывать разные сигналы и в данном случае она перехватывает сигнал DEBUG, посылаемый перед выполнением команды;
- команда read, умеет ожидать ввода чего-нибудь с клавиатуры (в этом случае, нужно только <html><ENTER></html> либо <html>Ctrl+C</html>);
- переменная окружения <html>$BASH_COMMAND</html>, валидная внутри обработчика команды trap.
ещё, можно позволить выполнять команды перед каждой строкой:
function _trap_DEBUG() { echo "# $BASH_COMMAND"; while read -r -e -p "debug> " _command; do if [ -n "$_command" ]; then eval "$_command"; else break; fi; done } trap '_trap_DEBUG' DEBUG
Также стоит упомянуть, что существует gdb-подобный отладчик для bash-скриптов: bashdb. Он обладает гораздо большей функциональностью, но требует сборки из исходников и установки.
bash/отладка_bash_скриптов_по_шагам.txt · Last modified: 2023/04/06 10:18 (external edit)