Felsökning av skalskript: Syntaxkontroll utan att exekvera

Finns det något alternativ jag kan ge för att bara kontrollera syntaxen för ett [bash] shell-skript för att kontrollera syntaxen för men inte faktiskt utföra något eller orsaka någon potentiell skada?

Svar

Från bash(1) mansida:

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

Kommentarer

  • Uppenbarligen. Jag vet inte varför jag var så blind att jag inte kunde se detta när jag gick igenom manuella sidor.

Svar

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

Tja, det berättade inte för mig att ”om” saknades på rad 634 men det var ganska hjälpsamt.

Kommentarer

  • Det är ' också värt att notera att du kan ladda ner och köra det lokalt, det körs i Haskell.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *