シェルスクリプトリンター

シェルスクリプトを貼り付けて、一般的な問題、非推奨構文、ベストプラクティスを即座にチェックします。

このツールについて

シェルスクリプトリンターは、bashおよびシェルスクリプトの一般的な問題、非推奨構文、 ベストプラクティスからの逸脱をチェックする無料のブラウザベースツールです。 クォートされていない変数、シェバン行の欠落、非推奨のバッククォートコマンド置換、 不要なcatコマンド、危険なrm操作、エラーハンドリングの欠如などの問題を検出します。

このリンターは、シェルスクリプト用の業界標準静的解析ツールである ShellCheckのルールのサブセットを実装しています。 各問題にはShellCheckルールID(例:クォートされていない変数のSC2086)がタグ付けされて おり、オンラインで詳細な説明を調べることができます。

ベストプラクティスチェックリストでは、シェバン行の存在、set -e(errexit)、 set -u(nounset)、set -o pipefailなどの必須安全設定をスクリプトに対して 評価します。

Dockerを使用している場合は、コンテナ向けの同様のチェックとして Dockerfileリンターをお試しください。 シェルスクリプトで使用するcron式の検証には、 Cron式ビルダーが役立ちます。

すべての処理はブラウザ内で完全に実行されます。スクリプトの内容がサーバーに 送信されることはありません。プロプライエタリコードや本番スクリプトでも 安全に使用できます。

使い方

  1. 左側のシェルスクリプトテキストエリアにスクリプトを貼り付けるか、Sampleをクリックしてデモスクリプトを読み込みます。
  2. LintをクリックするかCtrl+Enterを押して解析を実行します。
  3. 右側のResultsパネルを確認します。各問題には行番号、ルールID、重大度、説明が表示されます。
  4. 各問題の下にある提案(電球アイコン)で推奨される修正を確認します。
  5. Auto-lintをオンにすると、入力中に自動的にスクリプトが解析されます。
  6. パネルの下にあるベストプラクティスチェックリストでスクリプトの安全性スコアを確認します。
  7. CopyをクリックするかCtrl+Shift+Cを押して結果をクリップボードにコピーします。

人気のシェルスクリプト例

すべてのシェルスクリプトリント例を見る →

よくある質問

このリンターはどのシェル方言をサポートしていますか?

POSIX shとBashスクリプトの両方に共通する問題をチェックします。POSIX shコンテキストでBash固有の構文(シングルブラケットでの==やshシェバンでのfunctionキーワードなど)を検出し、適切にフラグを立てます。ほとんどのルールはShellCheckルールIDに基づいています。

set -euo pipefailとは何ですか?

これは「Bash Strict Mode」の組み合わせです。set -eはコマンドの失敗時にスクリプトを終了し、set -uは未設定の変数をエラーとして扱い、set -o pipefailはパイプラインで最初に失敗したコマンドの終了ステータスを返します。これらを組み合わせることで、一般的なスクリプトエラーを早期にキャッチできます。

なぜ変数をクォートすべきなのですか?

クォートされていない変数はワードスプリッティングとグロビングの対象となります。$varにスペースやグロブ文字(*、?)が含まれている場合、シェルはそれを複数の引数に分割したり、ファイル名に対して展開したりします。スプリッティング/グロビングを意図的に行う場合を除き、常に"$var"を使用してください。

バッククォートの何が問題ですか?

バッククォートのコマンド置換(`command`)はレガシー構文です。$()はネストが簡単で、読みやすく、バックスラッシュの処理が一貫しているため推奨されます。バッククォートは内部でバックスラッシュをエスケープする必要があり、複雑なエスケープなしではネストできません。

これはShellCheckの完全な代替品ですか?

いいえ。このツールはブラウザベースの簡易チェック用にShellCheckルールの有用なサブセットを実装しています。CI/CDパイプラインでの包括的な分析には、完全なShellCheckツールを使用してください。このリンターはクイックチェックとベストプラクティスの学習を目的としています。

データは安全ですか?

はい。すべての解析はJavaScriptを使用してブラウザ内で完全に実行されます。スクリプトの内容やコード、データがサーバーに送信されることはありません。ツール使用中にブラウザの開発者ツールのネットワークタブで確認できます。

SCプレフィックスは何を意味しますか?

SCはShellCheckの略です。ルールID(例:SC2086、SC2006)はShellCheckのルール番号体系に対応しています。ShellCheck wikiで任意のSCルールを検索して、例付きの詳細な説明を取得できます。

関連ツール