シェルスクリプトのデバッグ:実行せずに構文チェック


9

[bash]シェルスクリプトの構文をチェックしてその構文をチェックするだけで、実際には何も実行せず、潜在的な損傷を引き起こさないようにできるオプションはありますか?

回答:


7

bash(1)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.

明らかに。どうして自分が盲目だったのか、どうしてマニュアルページを読んでいるとこれが見えなかったのか分かりません。
アイユーン、2011年

1

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.

まあ、それは私に634行目で 'if'が欠けていることを教えてくれませんでしたが、それはかなり役に立ちました。


それをダウンロードしてローカルで実行できることも注目に値します。Haskellで実行されます。
2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.