こんにちは。よっしーです(^^)
今日は、shellcheckによる問題解析についてご紹介します。
背景
bashにおけるshellcheckによる問題解析について調査する機会があったので、そのときの内容を備忘として残しました。
この記事のソースは下記のサイトにアップしています。
実行環境について
実行環境は下記の記事を参考にお願いします。
概要
shellcheck
(シェルチェック)は、シェルスクリプト(bash、sh、zshなど)の品質を向上させるためのツールです。シェルスクリプトは、システム管理や自動化などで広く使用されていますが、文法のエラーや一般的なプログラミングのベストプラクティスに従っていない場合があります。shellcheck
は、コードを分析し、潜在的な問題や改善できる点を示してくれることで、コードの品質向上やバグの発見に役立ちます。
以下は、shellcheck
の基本的な使い方です。
- インストール:
shellcheck
をインストールするには、適切なパッケージマネージャーを使用してインストールします。例えば、Debian/Ubuntuでは次のようになります。
sudo apt-get install shellcheck
macOSでは、Homebrewを使用してインストールできます。
brew install shellcheck
他のディストリビューションやOSでも同様の手順でインストール可能です。
- シェルスクリプトのチェック: インストールが完了したら、
shellcheck
をシェルスクリプトに適用します。例えば、次のようにコマンドを実行します。
shellcheck yourscript.sh
yourscript.sh
の部分を対象としたいシェルスクリプトのファイル名に置き換えます。
- 結果の解釈:
shellcheck
はエラー、警告、情報などを出力します。それぞれのメッセージには、問題のある行数や詳細な情報が含まれています。これを修正してコードを改善することができます。 例えば、未定義の変数を使用している場合、shellcheck
はその点を指摘します。修正することで、プログラムの安定性や可読性が向上します。
shellcheck
を使用することで、シェルスクリプトの品質を向上させ、バグやセキュリティ上のリスクを軽減することができます。
次のセクションからは、実行環境における具体的な修正内容を記載しています。
ファイル一覧
modified: local/Dockerfile
Dockerfile
FROM ubuntu:24.04
+
+RUN apt-get update \
+ && apt-get install -y --no-install-recommends \
+ shellcheck \
+ && apt-get clean \
+ && rm -rf /var/lib/apt/lists/*
動作確認
下記のコマンドを実行します。
make build
make up
make login
shellcheck -V
下記のような出力になっていれば成功です。
root@33f2c7c4190a:/work# shellcheck -V
ShellCheck - shell script analysis tool
version: 0.9.0
license: GNU General Public License, version 3
website: https://www.shellcheck.net
サンプル
shellcheckの動作確認の一環として、13_xargs/13_xargs.shのファイルを下記のようにシェルを修正します。
-log_debug "$(which bash)"
+log_debug $(which bash)
下記のコマンドを実行します。
shellcheck 13_xargs/13_xargs.sh
下記のように表示されます。
詳細は下記のページで参照することができます。
おわりに
今日は、shellcheckによる問題解析についてご紹介しました。
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント