47

シェルスクリプトのスタイル、ベストプラクティス、命名規則などをテストするシェル(具体的にはbashまたはksh)チェッカーはありますか?(Cの場合はLint、Perlの場合はPerl :: Criticalのようなものです。)

kshを使用すると、実行することで構文チェックを実行できることを知っていますが、構文チェックksh -n script.kshだけでなく、実際のコードを解析/分析するものを望んでいましたか?

運が悪かったのかもしれませんが、聞いても大丈夫だと思います。

4

3 に答える 3

44

私はshellcheckを見つけました:それはあなたが見落としている引用や他のものの一般的なエラーをテストします(「それが機能するため」)。

于 2013-02-04T17:18:21.120 に答える
35

DebianおよびUbuntuプロジェクトは、誰かがに依存しているcheckbashismsことを示す可能性のある特定のパターンを探すスクリプトを使用します。/bin/shbash

それを超えて、ほとんどのシェルには、-nエラーを解析して報告するオプションがあります。スクリプトをいくつかの異なるシェルと照合して、移植可能な構文のみを使用していることを確認できます。

for shell in zsh ksh bash dash sh
do
  echo "Testing ${shell}"
  ${shell} -n my_script.sh
done

編集して追加:この回答を書いた後、後の回答で提案されているように、 shellcheckが書かれています。これは、以前の提案よりもはるかに徹底的なシェルスクリプトのリンティングを行います。

于 2010-09-09T19:31:03.613 に答える
8

私は、チェックバシムをラップするためのシュリントと、ブライアンの回答で提示されたシェルで利用可能な他の基本的なリンティングオプションを作成しました。

実際には、一種のギャグとしてrubygems(gem install shlint)を介してインストールできますが、shlintコマンド自体を解釈するには、perl(checkbashimsの場合)とPOSIX準拠のシェルのみが必要です。OSXとUbuntuではそのままで動作するはずです。

于 2013-05-27T23:17:02.230 に答える