2014-11-27 2 views
0

Мне нужно проверить, является ли набор сценариев синтаксически правильным. Я знаю, что есть несколько сообщений, предлагающих использовать bash -n <script_name>, но я запускаю это, и я ничего не получаю, например.Как проверить ошибки на синтаксисе оболочки bash на практике?

good.sh

#!/bin/bash 

echo "hello" 

bad.sh

#!/bin1/bash1 

eco "hello" 

Если я:

$ bash -n bad.sh; echo $? 
0 
$ bash -n good.sh; echo $? 
0 

Так как же различать хорошее и плохое точно?

+3

Насколько известно bash, может быть команда под названием 'eco', поэтому это не синтаксическая ошибка. –

+0

OK Я вижу. Если вы ответите и представите плохой пример, я соглашусь. Спасибо. –

+0

возможно dup: http: //stackoverflow.com/questions/171924/how-do-i-check-syntax-in-bash-without-running-the-script – HuStmpHrrr

ответ

2

bash -n проверяет, может ли Bash анализирующих кода (то есть, синтаксиса правильно), не является ли код «правильный». «Правильно» может иметь много значений, большинство из которых программа никогда не сможет проверить:

  • Может быть разобран (bash -n).
  • Отделка без ошибок (if ./script.sh; then [...]; fi).
  • Печатает то, что следует за определенным форматом.
  • Печатает что-то полезное.
  • Любые из вышеперечисленных в конкретной среде,, например, один, который имеет интерпретатор оболочки, который живет в /bin1/bash1 и команду eco, которая показывает вам наиболее экологически чистые пивные бутылки, доступные в 5 псе радиуса.
+0

Слишком плохо, что параметр '-e' не может быть перегружен с помощью' -n', чтобы указать что-то вроде «проверить, доступна ли команда» (и продолжить тестирование для синтаксических ошибок). – shellter

Смежные вопросы