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.