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?

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.

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.


Es ist auch erwähnenswert, dass Sie es herunterladen und lokal ausführen können, es läuft in Haskell.
Phk
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.