シェルスクリプトの条件分岐

シェルスクリプトの条件分岐の方法とはまりやすいエラーの対処法を紹介します。

if文

シェルスクリプトの条件分岐の構文は以下のようになります。

if [ 条件式 ]
then
    処理
elif [ 条件式 ]
then
    処理
else
    処理
fi
Point
ここで、重要なポイントは、ifと [ 、[ と条件式、条件式と ] にスペースが必要になる点です。

スペースがないとこれから紹介するエラーメッセージが出ます。

次に条件式関連の典型的なエラーメッセージを紹介します。

syntax error near unexpected token `then’

ifと[ 条件式 ]との間にスペースがないとこのようなエラーメッセージが出ますので、スペースを取りましょう。

[0: command not found

[ と条件式との間にスペースがないとこのようなエラーメッセージが出ます。

このエラーメッセージは、条件分岐に限らず、条件式を用いる場合にも発生します。

[: missing `]’

条件式と]との間にスペースがないとこのようなエラーメッセージが出ます。

このエラーメッセージは、条件分岐に限らず、条件式を用いる場合にも発生します。

if文でtestコマンド

testコマンドでの条件分岐の方法を紹介します。

if test 条件式 
then
    処理
elif test 条件式 
then
    処理
else
    処理
fi

ここで、testと[ ]は、同義です。

おススメの書き方です。なぜなら、testコマンドを使用することで自然とifとtest、testと条件式にスペースを挿入することにより、先ほど紹介したようなエラーを未然に防ぐことができるからです。

case文

条件分岐にはcase文も使えます。他のプログラミング言語でいうswitch文です。

case 条件式 in
    値1)
        処理;;
    値2)
     処理;;
     .
     .
     .
esac

条件式の値に応じて複数に分岐する場合に便利です。

Point
ここで、重要なポイントは、;が2ついる点です。

syntax error near unexpected token `)’

;(セミコロン)が2つついていないとこのようなエラーメッセージが出ます。

;を2つ記述しましょう。

まとめ

シェルスクリプトの条件式では、スペースがないとエラーメッセージが出ます。

誰でもシェルスクリプトを使ったら一度は出会うエラーだと思います。