Depurando scripts de shell: verificação de sintaxe sem executar

9

Existe alguma opção que eu possa dar para verificar a sintaxe de um script de shell [bash] para verificar a sintaxe dele, mas na verdade não executar nada nem causar danos potenciais?

Aeyoun
fonte

Respostas:

7

Na bash(1)página do manual:

-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.
Michael Mrozek
fonte
Obviamente. Não sei por que estava tão cego que não conseguia ver isso quando passei pelas páginas do manual.
Aeyoun 25/05
1

Experimente 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.

Bem, não me disse que o 'se' estava faltando na linha 634, mas foi bastante útil.

Martin
fonte
Também é importante notar que você pode fazer o download e executá-lo localmente, ele é executado em Haskell.
Phk #