Debug degli script della shell: controllo della sintassi senza esecuzione


9

C'è qualche opzione che posso dare per controllare solo la sintassi di uno script di shell [bash] per verificarne la sintassi, ma in realtà non eseguire nulla né causare potenziali danni?

Risposte:


7

Dalla bash(1)pagina man:

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

Ovviamente. Non so perché ero così cieco che non riuscivo a vederlo quando sfogliavo le pagine del manuale.
Aeyoun,

1

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

Beh, non mi ha detto che il 'if' mancava sulla linea 634 ma era abbastanza utile.


Vale anche la pena notare che è possibile scaricare ed eseguirlo localmente, funziona in Haskell.
phk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.