条件によって処理内容を変えたり、繰り返しなどを行ったりする際の書き方を「制御構文」と呼びます。代表的な制御構文としては、if文、case文、for文、while文があります。今回取り上げるのは、条件によって処理を分岐させる「if」です。
「もし○○だったら、××する」のように、ある条件のときだけ何かをする、という処理を書きたい場合に「if」を使用します。ifを使って条件分岐を行う文(条件文)は「if文」とも呼ばれます。
条件の部分は、通常「ある値が××と一致する」や「値が××より大きい(小さい)」などで示されます。これを「条件式」と呼びます。“値”には、例えば変数や引数の内容、文字列の長さ、計算結果、別のコマンドの実行結果などを使います。
ifはコマンドラインでも使用できます。詳細については、連載『Linux基本コマンドTips』の第223回を参考にしてください。
if文は「if 条件 then 〜 fi」のように、「if」から始まり「fi」で終わります。“それ以外”という場合には「else」を、別の条件を使いたい場合は「elif」を使います。
if 条件 then 条件が成立したとき実行するコマンド fi
if 条件 then 条件が成立したとき実行するコマンド else 条件が成立しなかったとき実行するコマンド fi
if 条件1 then 条件1が成立したとき実行するコマンド elif 条件2 then 条件1が成立せず、条件2が成立したときに実行するコマンド elif 条件3 then 条件1、条件2が成立せず、条件3が成立したときに実行するコマンド else 全ての条件が成立しなかったとき実行するコマンド fi
【※】「elif」のブロックは幾つあっても構いません。
if 条件1 && 条件2 then 条件1と条件2の両方が成立したときに実行するコマンド else それ以外のときに実行するコマンド fi
【※】「elif」でも同様に書くことができます。
if 条件1 || 条件2 then 条件1と条件2のいずれかが成立したときに実行するコマンド else それ以外のとき(=条件1、条件2ともに成立しなかった場合)に実行するコマンド fi
【※】「elif」でも同様に書くことができます。
なお、“あるコマンドの実行に成功したら〜”や、“失敗したら〜”という判定の場合は、ifを使わず、「&&」と「||」のみでコンパクトに書くこともできます。
コマンドA && コマンドAが成功したとき実行するコマンド
コマンドA || コマンドAが失敗したとき実行するコマンド
「if」と「elif」の使い方を簡単に試してみましょう。以下は、引数が1つだったら「one」、2つなら「two」、3つなら「three」、それ以外なら「ELSE」と表示するというスクリプトです。
#! /bin/bash if [ $# = 1 ] then echo "one" elif [ $# = 2 ] then echo "two" elif [ $# = 3 ] then echo "three" else echo "ELSE" fi
【※】引用符を付けて「if [ "$#" = "1" ]」のように書くこともできます。
$ chmod +x eliftest $ ./eliftest ELSE #← 引数がないので「ELSE」と表示された $ ./eliftest aaa bbb two #← 引数が2つなので「two」と表示された
Copyright © ITmedia, Inc. All Rights Reserved.