User Tools

Site Tools


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)