bash -n script.sh
を使用して、シェルスクリプトの構文を検証できます。しかし、私がこの機能をテストしようとしていたとき、私はこのオプションですべての構文エラーを見つけることができないことに気付きました。例えばBASHの構文デバッグモードの不具合の確認?
:
[email protected]:~/testenv# cat test
#!/bin/bash
SEND=1
if [ "$SEND" -eq 0 ]
echo no
fi
それでは、スクリプトをテストしてみましょう:
[email protected]:~/testenv# bash -n test
test: line 5: syntax error near unexpected token `fi'
test: line 5: `fi'
それは正常に動作します。ただし、ブラケットの1つを取り外すだけの場合:
[email protected]:~/testenv# cat test
#!/bin/bash
SEND=1
if [ "$SEND" -eq 0
then
echo no
fi
[email protected]:~/testenv# bash -n test
[email protected]:~/testenv#
何も起こりませんでした。
は、私はまた、それが「-n」説明はbashの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.
それは右の「対話型シェル」であってはならないので、それは、スクリプトファイルのですか?だから、どうやってこれが起こるの?私はあなたが道の非常に奇妙な癖に実行している推測している
ご覧ください:http://www.shellcheck.net/ – Cyrus
@NeilWang:有効です!人々はそれを間違って解釈する可能性があります – Inian
@Inian 2番目の例では、閉じ括弧 "]"が見つかりませんでしたが、構文チェッカーは見つかりませんでした。あなた自身のボックスでそれらを実行してください、あなたはそれがエラーをスローすることがわかります。 – NeilWang