ShellCheckはシェルスクリプトの勉強になるからとりあえず入れておけ
本日はシェルスクリプトデーでした。
ShellCheckというツールを入れたところ、いろいろと怒ってくれてありがたかったのでご紹介。
ShellCheckとは?
シェルスクリプト用の静的解析ツールです。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
まとめ
ちょっとずつベストプラクティスを学んでいきたい。