TL;DR
経緯
- シェルスクリプトを書く時、ちょくちょく shellcheck のお世話になる
- いざ実行しようとすると、このマシン shellcheck インストールしてないじゃん!!となる
- インストールするかー。Debian や CentOS であれば apt や yum のリポジトリ提供されてるな
でも今は macOS 使ってるから、 ドキュメント に従って
$ brew install shellcheck
ビルド終わるまで待つか
_人人人人人人人人人人人人人人_
> 一時間待っても終わらない <
 ̄YYYYYYYYYYYYYY ̄
私の環境だけかもしれませんが、めっちゃ時間かかります。
もちろん、一度ビルドしてしまえばあとは問題なく使えますが、
何かしらの理由で新しい環境に移行した時、またこの時間を過ごすのはよくない。どうにかしたい!!
Docker イメージ
そんなわけで、「ビルドした shellcheck バイナリを持った Docker イメージでもあればいいのでは?」と安易に考え、
とりあえず Docker Hub で探したら当然のように shellcheck 公式の Docker Image が見つかりました。
https://hub.docker.com/r/koalaman/shellcheck/
使い方はドキュメントのとおり
$ docker pull koalaman/shellcheck
$ docker run -v $(pwd):/scripts koalaman/shellcheck /scripts/myscript.sh
docker run
するスクリプト
問題なく動きましたが、しかし毎回 docker run ...
と書くのもめんどくさいので、適当に runner を作りました。
(
dir="$(cd "$(dirname "$1")" && pwd)"
name="$(basename "$1")"
docker run --rm -v "${dir}:/scripts" koalaman/shellcheck "/scripts/${name}"
)
こいつをてきとうな名前(私は同名 shellcheck
にしました)で保存しておけば
$ shellcheck /path/to/script.sh
ってやると実行してくれます。
まとめ
最近(結構前からかな)は各ツールや環境を Docker コンテナに分離する流行を感じるので、追っ掛けてみました。便利。