今天看到同事推薦可以在 Sublime Text 上安裝 shellcheck 這個 plugin,
來檢查自己的 shell script 有沒有一些簡單的錯誤,
感覺不錯用,就來安裝試試看
1. 安裝 SublimeLinter
SublimeLinter 是一個主架構,在這架構下可以有一堆的 Linter,
像是給 python 用的 pylint,給 shell script 用的 shellcheck 等等
先開啟 Sublime Text,到 Tool > Command Palette 那邊打 Package install
如果還沒裝過 Package Control 套件的話,可以參考 Package Control Installation 這邊:

選擇 Package Control: Install package,找到 SublimeLinter 來安裝
注意要選到敘述是「Interactive code linting framework...」的,
不要選到是附屬於 Linter 的 plugin 的

2. 安裝 shellcheck 執行檔
之後要安裝的 shellcheck plugin 會用到 shellcheck 這個執行檔,
要安裝的話可以參考 shellcheck 首頁上的幾個方法,我用的是 Homebrew:
brew install shellcheck
這邊有個小插曲是 brew 安裝好 shellcheck 似乎沒有問題,
但後來發現我的 shellcheck 執行檔是無法執行的...
幸好後來重新編譯了某個相依的套件而解決了問題,
可以參考 解決 Library not loaded: libgmp.10.dylib 的問題 這篇
3. 安裝 SublimeLinter - shellcheck plugin
類似安裝 SublimeLinter 的步驟,將 shellcheck 這個 linter plugin 裝好:
在使用 Package Control 安裝套件時,
最好將 Sublime Text > View > Show Console 打開,
這樣子一些安裝的相關訊息會顯示出來,
之前 shellcheck plugin 沒有成功執行的訊息也是這樣才看到的
正確的話,應該會看到 shellcheck linter reloaded 或是 activated 的字眼

4. 使用 shellcheck 檢查 shell script 中的錯誤
shellcheck 似乎會自動判斷目前檔案是不是 shell script,並偵測錯誤
不過也可以用 Sublime Text > Command Palette > SublimeLinter: Lint This View,
立刻檢查目前的檔案:

可以看到下面短短的 shell script 就被偵測出錯誤,
在左邊有橘紅色的標誌,下方也列出了錯誤的原因,
建議我們用 (...) 的方式取代`...` 的語法
這次雖然安裝 shellcheck 時有遇到一些 homebrew 造成的問題,
不過也都順利解決,plugin 用起來感覺也不錯用喔
