シェルスクリプトのスタイル、ベストプラクティス、命名規則などをテストするシェル(具体的にはbashまたはksh)チェッカーはありますか?(Cの場合はLint、Perlの場合はPerl :: Criticalのようなものです。)
kshを使用すると、実行することで構文チェックを実行できることを知っていますが、構文チェックksh -n script.ksh
だけでなく、実際のコードを解析/分析するものを望んでいましたか?
運が悪かったのかもしれませんが、聞いても大丈夫だと思います。
シェルスクリプトのスタイル、ベストプラクティス、命名規則などをテストするシェル(具体的にはbashまたはksh)チェッカーはありますか?(Cの場合はLint、Perlの場合はPerl :: Criticalのようなものです。)
kshを使用すると、実行することで構文チェックを実行できることを知っていますが、構文チェックksh -n script.ksh
だけでなく、実際のコードを解析/分析するものを望んでいましたか?
運が悪かったのかもしれませんが、聞いても大丈夫だと思います。
私はshellcheckを見つけました:それはあなたが見落としている引用や他のものの一般的なエラーをテストします(「それが機能するため」)。
DebianおよびUbuntuプロジェクトは、誰かがに依存しているcheckbashisms
ことを示す可能性のある特定のパターンを探すスクリプトを使用します。/bin/sh
bash
それを超えて、ほとんどのシェルには、-n
エラーを解析して報告するオプションがあります。スクリプトをいくつかの異なるシェルと照合して、移植可能な構文のみを使用していることを確認できます。
for shell in zsh ksh bash dash sh
do
echo "Testing ${shell}"
${shell} -n my_script.sh
done
編集して追加:この回答を書いた後、後の回答で提案されているように、 shellcheckが書かれています。これは、以前の提案よりもはるかに徹底的なシェルスクリプトのリンティングを行います。
私は、チェックバシムをラップするためのシュリントと、ブライアンの回答で提示されたシェルで利用可能な他の基本的なリンティングオプションを作成しました。
実際には、一種のギャグとしてrubygems(gem install shlint
)を介してインストールできますが、shlintコマンド自体を解釈するには、perl(checkbashimsの場合)とPOSIX準拠のシェルのみが必要です。OSXとUbuntuではそのままで動作するはずです。