なっく日報

技術やら生活やらのメモ

ShellCheckはシェルスクリプトの勉強になるからとりあえず入れておけ

本日はシェルスクリプトデーでした。

ShellCheckというツールを入れたところ、いろいろと怒ってくれてありがたかったのでご紹介。

ShellCheckとは?

github.com

シェルスクリプト用の静的解析ツールです。JavaScriptな人でいうところのJSHint, ESLint的な。

作者のアイコンのコアラがカワイイw

インストール方法

Macの場合

brew install shellcheck

にて。

どんな警告を出してくれる?

例えば、カレントディクトリを実行ファイルのあるディレクトリにする ↓のイディオムを書いてみたところ

#!/bin/sh
cd $(dirname $1)
❯ shellcheck a.sh

In a.sh line 2:
cd $(dirname $1)
^-- SC2164: Use cd ... || exit in case cd fails.
   ^-- SC2046: Quote this to prevent word splitting.
             ^-- SC2086: Double quote to prevent globbing and word splitting.

結構怒られました。

↓にしたら警告が出なくなりました。

#!/bin/sh
cd "$(dirname "$1")" || exit 1

まとめ

ちょっとずつベストプラクティスを学んでいきたい。