Debuggen von Shell-Skripten: Syntaxprüfung ohne Ausführung

9

Gibt es eine Option, die ich geben kann, um nur die Syntax eines [bash] Shell-Skripts zu überprüfen, um die Syntax zu überprüfen, aber tatsächlich nichts auszuführen oder potenziellen Schaden zu verursachen?

Aeyoun
quelle

Antworten:

7

Von der bash(1)Manpage:

-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.
Michael Mrozek
quelle
Offensichtlich. Ich weiß nicht, warum ich so blind war, dass ich das nicht sehen konnte, als ich die Handbuchseiten durchgesehen habe.
Aeyoun
1

Probieren Sie http://www.shellcheck.net aus

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

Nun, es hat mir nicht gesagt, ob das "Wenn" in Zeile 634 fehlt, aber es war ziemlich hilfreich.

Martin
quelle
Es ist auch erwähnenswert, dass Sie es herunterladen und lokal ausführen können, es läuft in Haskell.
Phk