Отладка сценариев оболочки: проверка синтаксиса без выполнения

9

Есть ли какая-то опция, которую я могу дать, чтобы просто проверить синтаксис сценария оболочки [bash], чтобы проверить его синтаксис, но на самом деле ничего не выполнять и не наносить потенциальный ущерб?

Aeyoun
источник

Ответы:

7

Со bash(1)страницы руководства :

-n      Read commands but do not execute them. This may be used to check a
        shell script for syntax errors. This is ignored by interactive shells.
Михаил Мрозек
источник
Очевидно. Я не знаю, почему я был настолько слеп, что не мог этого увидеть, когда просматривал справочные страницы.
Aeyoun
1

Попробуйте http://www.shellcheck.net

$ shellcheck myscript.sh

    In myscript.sh line 590:
    for f in $*; do
    ^-- SC1009: The mentioned parser error was in this for loop.


    In myscript.sh line 617:
        if [ ! -e "$somefile".vcf ]; then
        ^-- SC1046: Couldn't find 'fi' for this 'if'.
        ^-- SC1073: Couldn't parse this if expression.


    In myscript.sh line 1026:
    done
    ^-- SC1047: Expected 'fi' matching previously mentioned 'if'.
        ^-- SC1072: Unexpected keyword/token. Fix any mentioned problems and try again.

Ну, это не говорит мне, что «если» отсутствует в строке 634, но это было довольно полезно.

Мартин
источник
Также стоит отметить, что вы можете скачать и запустить его локально, он работает на Haskell.
phk