VSCode でシェルスクリプトを安全に書くための拡張機能

開発

変数の展開ミスやクォート漏れを ShellCheck で検出して安全に書く方法を紹介します。

目次

シェルスクリプトには罠がいっぱいです。例えば、変数を展開する時にダブルクォーテーションで囲まないと意図しない挙動になることがあります。

スペースや改行を含む文字列の取り扱いにも注意が必要です。ls *.txt の結果を変数に代入し、それを for ループで処理するようなコードでは、ファイル名にスペースが含まれている場合に意図せず複数のファイル名に分割されてしまいます。

シェルスクリプトには一見些細に思える記述ミスが、実行時に大きな問題を引き起こす危険があります。静的解析でこれらを事前にチェックする VSCode 拡張機能が ShellCheck です。

ShellCheck

ShellCheck は、シェルスクリプトのバグを検出するための強力なツールです。VSCode 拡張機能をインストールすることで、記述したシェルスクリプトをリアルタイムで解析し、問題点を指摘してくれます。

例えば、以下のようなケースを検出できます。

  • クォーテーション不足
  • 未使用の変数
  • 文法エラー
  • ポータビリティの問題
  • セキュリティ上の脆弱性

インストール

VSCode の拡張機能マーケットプレイスで「ShellCheck」を検索し、インストールします。

設定

ShellCheck はインストール直後から利用可能ですが、プロジェクトに合わせてより効果的に使うためには設定を調整することをおすすめします。VSCode の設定 (settings.json) で、ShellCheck のパスや除外する警告などを指定できます。

{
  "shellcheck.enabled": true,
  "shellcheck.executablePath": "/usr/bin/shellcheck",
  "shellcheck.exclude": [
    "SC2086" // 引用符で囲まれていない変数を展開します。
  ]
}
  • shellcheck.enabled: ShellCheck を有効にするかどうか
  • shellcheck.executablePath: ShellCheck の実行ファイルのパス
  • shellcheck.exclude: 除外する警告コード

上記は一例です。すべてのオプションは GitHub リポジトリの Options の項 を参照してください。

使用例

ShellCheck の使用例
ShellCheck の使用例

ツールチップに問題点の概要が表示されます。リンクになっている SC2016 に行けば詳細を見られます。作用祭には「問題のあるコードの例」「正しいコードの例」「問題の理由」などが丁寧に記載されています。