組み込み系エンジニア3年生

プログラマ、Linux、組み込み系

【Linux】シェルスクリプトのシンタックスチェックの方法

どうも。dice27です。

長いスクリプトを書いていたりすると、
書き終わって実行した時にシンタックスエラーが沢山出たりして辛い思いをする事があります。
そこで今日は、凄く簡単に出来る、シェルスクリプトシンタックスチェックの方法について書いていきます。

シンタックスチェックってなんぞや?

プログラムの構文が正しいかどうか調べることをシンタックスチェックと言います。
引用元:ナレッジベース:FAQ



つまり、シェルスクリプトの文法のチェックが出来ます。 しかも、とても簡単に出来ます。

その1 “ -n オプションをつけて実行”

以下のように -n オプションをつけて実行すればOKです。

# bashの場合
$ bash -n hoge.sh

# shの場合
$ sh -n hoge.sh

# zshの場合
$ zsh -n hoge.sh

# dashの場合
$ dash -n hoge.sh

非常に簡単ですね。
※但し、変数のタイプミスなどはエラーにならないので注意が必要です。

その2 “ShellCheck”

ShellCheckはシェルスクリプトシンタックスチェックをしてくれるツールです。

インストール方法

ディストリビューション毎に記載しています。
Macも記載。

# Debianベースのディストリビューション
$ sudo apt-get install shellcheck

# EPELベースのディストリビューション
$ sudo yum -y install epel-release
$ sudo yum install ShellCheck

# OS X
$ brew install shellcheck

使い方

ターミナルを開いて、以下の様に実行すればOKです。

$ shellcheck [options] hoge.sh

主なオプション

オプション 意味
-e [CODE1,CODE2..] shellcheckが返すエラーコードを指定して、そのエラーや警告を無視します。カンマ区切りで複数指定可能です。
-f [FORMAT] チェック結果の出力形式を指定します。指定可能な出力形式については後述します。
-s [target] ターゲットをsh、bash、dash、kshから指定できます。デフォルトでは、ファイルのシバンを使用するか、ターゲットシェルを判別できない場合はbashを使用します。
-V バージョン情報を出力して終了します。

指定可能な出力形式

指定フォーマット 意味
tty デフォルトの出力形式。
gcc GCC互換の出力形式。
checkstyle Checkstyle互換のXML出力。
json Json形式での出力。



参考資料

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/780chshsyntax.html https://www.mankier.com/1/shellcheck https://rcmdnk.com/blog/2014/11/26/computer-bash-zsh/