7 ответов:
bash -n scriptnameвозможно, очевидное предостережение: это проверяет синтаксис, но не проверяет, пытается ли ваш скрипт bash выполнить команду, которая не находится на вашем пути, например
ech helloвместоecho hello.
время все меняет. вот сайт, которые обеспечивают онлайн-проверка синтаксиса для скрипта.
Я обнаружил, что это очень мощный обнаружения распространенных ошибок.
О ShellCheck
ShellCheck статический анализ и инструмент анализа для SH/bash скриптах. Он в основном сосредоточен на обработке типичных синтаксических ошибок начального и среднего уровня и ловушек, где оболочка просто дает загадочный сообщение об ошибке или странное поведение, но он также сообщает о нескольких более сложных проблемах, где угловые случаи могут вызвать задержки сбоев.
исходный код Haskell доступен на GitHub!
Я также включаю опцию ' u ' на каждом скрипте bash, который я пишу, чтобы сделать дополнительную проверку:
set -uэто сообщит об использовании неинициализированных переменных, как в следующем скрипте 'check_init.sh'
#!/bin/sh set -u message=hello echo $mesageвыполняется скрипт :
$ check_init.shсообщит следующее:
./check_init.sh[4]: mesage: параметр не задан.
очень полезно, чтобы поймать опечатки
sh -n script-nameзапустить. Если есть какие-либо синтаксические ошибки в скрипте, то он возвращает то же сообщение об ошибке. Если нет ошибок, то он выходит, не давая никакого сообщения. Вы можете проверить сразу с помощью
echo $?, что вернет0об успешной без каких-либо ошибок.это сработало для меня хорошо. Я работал на Linux OS, Bash Shell.
null команда [двоеточие] также полезно при отладке, чтобы увидеть значение переменной
set -x for i in {1..10}; do let i=i+1 : i=$i done set -
Я на самом деле проверяю все скрипты bash в текущем dir на синтаксические ошибки без их запуска с помощью :
пример:
find . -name '*.sh' -exec bash -n {} \;Если вы хотите использовать его на один файл, просто изменить шаблон имени файла.
здесь плагин BashSupport на IntelliJ IDEA который проверяет синтаксис.

Comments