Как проверить ошибки (и, возможно, предупреждения) в сценарии bash?Как проверить скрипт bash без запуска скрипта?
Я хочу предварительно проверить скрипты bash, прежде чем проверять их в хранилище git.
Я знаю, что могу использовать bash -n script.sh
для первой простой проверки, но этого не найти, например, такие вещи, как переписывание строки readonly.
readonly unique_id = "42"
unique_id = "21"
будет нормально для bash -n script.sh
, но потерпит неудачу на исполнение, конечно.
EDIT: следующего сценарий
#!/bin/bash
# check.sh
readonly unique_id="42"
unique_id="21"
дает 0
если выполнить bash -n check.sh; echo $?
, но сами по себе исполнение приводит к сообщению об ошибке ./check.sh: line 4: unique_id: readonly variable
Оба поведения являются правильными, потому что это не ошибка синтаксиса, но это будет (даже в модульных тестах), и я спрашиваю, есть ли другой способ предварительной проверки, чтобы отфильтровать такие ошибки.
Unittest найдет только ожидаемых логических сбоев, так что это не альтернатива.
Две строки, выложенные выше, являются * ошибочными *. Вам нужно удалить пробелы вокруг '='. – devnull
Да, вы правы; Я удалил пробелы и добавил shebang, чтобы получить пример реального мира. Спасибо – user762353