🐧 Как отлажидить / проверить скрипты Bash

by itisgood
Есть методы из традиционных сред программирования, которые могут помочь.
Некоторые основные инструменты, такие как использование редактора с подсветкой синтаксиса, также помогут.
Есть встроенные опции, которые Bash сам по себе предоставляет, чтобы упростить отладку и ежедневную работу системного администратора Linux.
В этой статье вы узнаете несколько полезных методов отладки скриптов Bash:
  • Как использовать традиционные методы
  • Как использовать параметр xtrace
  • Как использовать другие параметры Bash
  • Как использовать trap

Используя Традиционные Методы

Отладка кода может быть сложной, даже если ошибки просты и очевидны.

Для помощи программистам традиционно использовались такие инструменты, как отладчики и подсветка синтаксиса в редакторах.

Ничего не меняется при написании скриптов Bash.

Простое выделение синтаксиса позволит вам отлавливать ошибки при написании кода, избавляя вас от трудоемкой задачи отслеживания ошибок на более позднем этапе.

Некоторые языки программирования поставляются с сопутствующими средами отладки, такими как gcc и gdb, которые позволяют вам шагать по коду, устанавливать точки останова, исследовать состояние всего в моменты выполнения и многое другое – но, как правило, тут не требуется такой сложный подход, как этот с скрипт оболочки и код просто интерпретируется, а не компилируется в двоичные файлы.

Существуют методы, используемые в традиционных средах программирования, которые могут быть полезны со сложными скриптами Bash, например, с использованием утверждений.

В основном это способы явного утверждения условий или состояния вещей в определенный момент времени.

Утверждения могут выявить даже самые незначительные ошибки.

Они могут быть реализованы в виде короткой функции, которая показывает время, номер строки и тому подобное, или что-то вроде этого:

$ echo "function_name(): value of \$var is ${var}"

Как использовать опцию Bash xtrace

При написании скриптов оболочки логика программирования имеет тенденцию быть короче и часто содержится в одном файле.

Таким образом, есть несколько встроенных опций отладки, которые мы можем использовать, чтобы увидеть, что происходит не так.

Первый вариант, который стоит упомянуть, вероятно, самый полезный – параметр xtrace.

Его можно применить к скрипту, вызвав Bash с ключом -x.

$ bash -x <scriptname>
Он говорит Bash показать нам, как выглядит каждое выражение непосредственно перед тем, как оно выполнится.
Вскоре мы увидим пример этого параметра в действии, но сначала давайте начнем с контраста -x с его противоположностью -v, который показывает каждую строку до ее оценки, а не после.
Опции можно комбинировать, и, используя -x и -v, вы можете увидеть, как выглядят операторы до и после замены переменных.

Как использовать другие параметры Bash

Параметры отладки Bash по умолчанию отключены, но как только они включаются с помощью команды set, они остаются включенными до тех пор, пока не будут явно отключены.

Если вы не уверены, какие опции включены, вы можете проверить переменную $ -, чтобы увидеть текущее состояние всех переменных.

$ echo $-
himBHs
$ set -xv && echo $-
himvxBHs
Есть еще один полезный ключ, который мы можем использовать, чтобы помочь нам найти переменные, на которые что-то ссылается, без установки какого-либо значения.
Это ключ -u, и точно так же, как -x и -v, его также можно использовать в командной строке.
Мы можем использовать эти опции в коротких скриптах Bash, чтобы предоставить нам информацию отладки для выявления проблем, которые иначе не вызовут обратную связь от интерпретатора Bash.

Как использовать trap, чтобы помочь в отладке

Есть более сложные методы, которые стоит рассмотреть, если ваши скрипты большиие сложные, включая использование функции assert, как упоминалось ранее.

Один из таких методов, о которых следует помнить, – это использование trap bash позволяют нам перехватывать сигналы и что-то делать в этой точке.

Простой, но полезный пример, который вы можете использовать в своих скриптах Bash – это trap EXIT.

Заключение

Если вы заметили, что ваш скрипт Bash ведет себя не так, как ожидалось, и причина по какой-либо причине вам не ясна, подумайте, какая информация будет полезна, чтобы помочь вам определить причину, а затем используйте наиболее удобные инструменты, доступные для определения проблем.
Опция xtrace -x проста в использовании и, вероятно, является наиболее полезной из представленных здесь опций, поэтому попробуйте попробовать ее в следующий раз, когда вы столкнетесь со скриптом, который не выполняет то, что, по вашему мнению должно произойти.

You may also like

Leave a Comment