Отладка 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)
Благодаря параметру o
можно дебажить части кода при помоши параметров:
set -v, verbose
выводить строки ввода по мере их чтенияset -n, noexec
проверка синтаксиса, без выполнения самого кода
В следующем примере команда создания каталога не будет выполнена, в консоли появится сообщение об ошибке синтаксиса:
#!/bin/bash
#включаем параметр проверки синтаксиса
set -o noexec
if [someerror]
mkdir project
echo "Создан новый каталог."
#выключаем параметр проверки синтаксиса
set +o noexec