シェルスクリプトの条件分岐の方法とはまりやすいエラーの対処法を紹介します。
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つ記述しましょう。
まとめ
シェルスクリプトの条件式では、スペースがないとエラーメッセージが出ます。
誰でもシェルスクリプトを使ったら一度は出会うエラーだと思います。