Как отлаживать сценарии командной оболочки Bash

Когда сценарий не работает должным образом, необходимо определить место возникновения проблемы. Оболочки UNIX/Linux предоставляют режим отладки. Запустите весь скрипт в режиме отладки или только часть скрипта.

Чтобы запустить весь скрипт в режиме отладки, добавьте -x после #!/bin/[shell] в первой строке:

Чтобы запустить весь скрипт в режиме отладки из командной строки, добавьте -x к команде sh, используемой для выполнения скрипта:

Параметры оператора отладки

Запустите несколько частей сценария в режиме отладки, поместив опцию set -x в то место, где должна начаться отладка, и опцию set +x в то место, где вы хотите ее остановить. Сделайте это столько раз в сценарии, сколько вам нужно.

Опции отладки показаны в таблице ниже:

Значение опции
set -x Вывод операторов после интерпретации метасимволов и переменных
set +x Остановка вывода операторов
set -v Вывод операторов до до интерпретации метасимволов и переменных
set -f  Отключает генерацию имен файлов (с использованием метасимволов)

Оператор set -v аналогичен оператору set -x, за исключением того, что он показывает строку оператора до того, как оболочка выполнит интерпретацию или подстановку. Когда вы используете эти две опции вместе с set -xv, оболочка отображает строки операторов до и после интерпретации и подстановки, чтобы вы могли видеть, как оболочка использовала строку оператора в сценарии.

Для следующего оператора в сценарии оболочки:

Строка оператора перед интерпретацией (set -v) имеет вид:

Строка оператора после интерпретации (set-x) имеет вид:

Если обе опции включены, строка -v всегда отображается перед строкой -x. Кроме того, символ + не предшествует строке -v.

Пример режима отладки с опцией set -x

В следующем примере показан режим отладки, включенный для сценария и выключенный в конце.

Пример режима отладки с опцией set -x

Пример режима отладки с опцией set -v

В следующем примере показан режим отладки -v, включенный для сценария. Эта опция:

  • Выводит оператор перед выполнением, но без ведущего + (в отличие от того, что отображает опция -x).
  • Не переводит метасимволы; поэтому выводит оператор точно так, как оно есть в сценарии.
  • Выводит строки комментариев.

Пример режима отладки с опцией set -v

Понравилась статья? Поделиться с друзьями:
Добавить комментарий