Полный цикл в digital

Отладка Bash-скриптов в Linux

Если вы хотите включить параметры отладки в своих сценариях, вы можете сделать это тремя способами:

  1. bash флаг_дебага file.sh включите параметры отладки, из оболочки терминала при вызове сценария
  2. #!/bin/bash флаг_дебага включите параметры отладки, передав флаги отладки в строку shebang в сценарии
  3. 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
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг