Depuración de scripts de shell: comprobación de sintaxis sin ejecutar


9

¿Hay alguna opción que pueda dar para verificar la sintaxis de un script de shell [bash] para verificar la sintaxis, pero no ejecutar nada ni causar ningún daño potencial?

Respuestas:


7

Desde la bash(1)página del 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. No sé por qué estaba tan ciego que no podía ver esto cuando estaba leyendo las páginas del manual.
Aeyoun

1

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

Bueno, no me dijo que faltaba el 'si' en la línea 634, pero fue bastante útil.


También vale la pena señalar que puede descargarlo y ejecutarlo localmente, se ejecuta en Haskell.
phk
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.