Debugowanie skryptów powłoki: sprawdzanie składni bez wykonywania

Czy jest jakaś opcja, którą mogę dać, aby sprawdzić składnię skryptu powłoki [bash], aby sprawdzić składnię ale w rzeczywistości niczego nie wykonuje ani nie powoduje żadnych potencjalnych szkód?

Odpowiedź

Z bash(1) strona podręcznika:

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

Komentarze

  • Oczywiście. Nie wiem, dlaczego byłem tak ślepy, że nie mogłem tego zobaczyć, przeglądając strony podręcznika.

Odpowiedź

Wypróbuj 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. 

Cóż, nie powiedział mi, że w linii 634 brakowało „gdyby”, ale było to całkiem pomocne.

Komentarze

  • ' jest również warte odnotowania, że możesz go pobrać i uruchomić lokalnie, działa w Haskell.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *