Debug degli script di shell: controllo della sintassi senza eseguire

Cè qualche opzione che posso dare per controllare la sintassi di uno script di shell [bash] per controllare la sintassi di ma non eseguire effettivamente nulla né causare alcun danno potenziale?

Risposta

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

Commenti

  • Ovviamente. Non so perché ero così cieco da non riuscire a vederlo mentre leggevo le pagine di manuale.

Risposta

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 diceva che “se” mancava sulla riga 634 ma è stato piuttosto utile.

Commenti

  • ' vale anche la pena notare che puoi scaricarlo ed eseguirlo localmente, funziona in Haskell.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *