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?

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.

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.


Também é importante notar que você pode fazer o download e executá-lo localmente, ele é executado em Haskell.
— Phk #
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.