シェルスクリプトのデバッグ:実行なしの構文チェック

シェルスクリプトのデバッグ:実行なしの構文チェック

[bash]シェルスクリプトの構文を調べるために提供できるオプションはありますか?実際に何も実行しないか、潜在的な損傷を引き起こしませんか?

答え1

bash(1)マニュアルページから:

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

答え2

試してみてください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」が抜けたという事実は教えてくれませんが、とても役に立ちます。

関連情報