Отладка Bash-скриптов в Linux
Если вы хотите включить параметры отладки в своих сценариях, вы можете сделать это тремя способами:
bash флаг_дебага file.shвключите параметры отладки, из оболочки терминала при вызове сценария#!/bin/bash флаг_дебагавключите параметры отладки, передав флаги отладки в строкуshebangв сценарииsetвключите параметры отладки, с помощью командыsetиз сценария
Оператор set
Оператор set используется для выборочной отладки на отдельных участках кода.
set -x и set +xначать и закончить отладкуset -v, verboseвыводить строки ввода по мере их чтенияset -n, noexecпроверка синтаксиса, без выполнения самого кодаset -o параметр и set +o параметрвключение и выключение параметра
Начать и закончить отладку (параметр -x)
Если уверены, что часть скрипта вызывает ошибки, тогда нет необходимости отлаживать весь скрипт. Мы можем отладить часть или несколько частей скрипта следующим образом.
Поместите опцию set –x в начальную точку области, в которой требуется отладка, и поместите опцию set + x там, где вы хотите, чтобы она остановилась. Например, в следующем скрипте мы хотим отладить область, начиная с while, потому что мы думаем, что цикл работает не так, как ожидалось. Поэтому мы заключим его, поместив опцию set –x перед строкой while и закончим, поместив опцию set + x после done.
Теперь заключите область, которую вы хотите отладить, используя параметр set –x и set + x, как описано выше:
#!/bin/bash
count=1
#включаем, начало отладки
set -x
while [ $count -le 5 ]; do
echo "Count: $count"
count=$((count+1))
done
#выключаем, конец отладки
set –x
Отладка всего сценария
Запуск оболочки с параметром –x, запустит весь сценарий в режиме отладки. В этом режиме следы команд и их аргументов отображаются на выходе до их выполнения. Чтобы запустить весь сценарий в режиме отладки, добавьте параметр –x перед запускающим скриптом следующим образом:
bash -x ./file.sh
Отображение команд сценария (параметр -v)
Параметр -v указывает оболочке работать в подробном режиме. При использовании этого режима отображаются все команды в сценарии перед их выполнением. Для запуска этого режима используйте следующий синтаксис:
bash -v ./file.sh
Проверка синтаксиса (параметр -n)
Параметр -n включает режим проверки синтаксиса. Он указывает оболочке не выполнять команды, а просто проверять синтаксические ошибки. Это безопасный способ выполнить отладку. Для запуска этого режима используйте следующий синтаксис:
bash -n ./file.sh
Если ошибок нет, вывод будет пустой, если ошибки есть, покажет номер строки в файле с ошибкой.
Передача параметров (параметр -o)
Благодаря параметру
set -v, verboseвыводить строки ввода по мере их чтенияset -n, noexecпроверка синтаксиса, без выполнения самого кода
В следующем примере команда создания каталога не будет выполнена, в консоли появится сообщение об ошибке синтаксиса:
#!/bin/bash
#включаем параметр проверки синтаксиса
set -o noexec
if [someerror]
mkdir project
echo "Создан новый каталог."
#выключаем параметр проверки синтаксиса
set +o noexec