この記事を読むと・・・ |
---|
シェルスクリプトでif文を使って条件分岐させる方法が理解できる |
【if文】基本書式
if文は、プログラム内で特定の条件に基づいて処理を分岐させるための機能です。
基本的なif文の記載パターンを3種類紹介します。
書式パターン①は条件が真であるの処理を記載するパターンです。
条件が一致した場合は「~をする」という命令を記載します。
書式パターン①
if [条件]; then
#条件が真の場合に実行される処理
fi
書式パターン②は条件が真である場合と偽である場合のそれぞれの処理を記載するパターンです。
条件が一致した場合は「~する」、一致しなかった場合は「~する」という命令を記載します。
書式パターン②
if [ 条件 ]; then
#条件が真の場合に実行される処理
else
#条件が偽の場合に実行される処理
fi
書式パターン③は条件1が真である場合と条件2が偽である場合と、
どちらの条件にも偽である場合の処理を記載するパターンです。
条件1が一致した場合は「~する」、条件2が一致した場合は「~する」、
条件1,条件2のどちらにも一致しない場合は「~する」という命令を記載します。
書式パターン③
if [ 条件1 ]; then
#条件1が真の場合に実行される処理
elif [ 条件2 ]; then
#条件2が真の場合に実行される処理
else
#条件1,条件2がどちらも偽の場合に実行される処理
fi
【if文】基本書式パターン例
先ほど紹介した基本書式パターンの3種類で作成するシェルスクリプトの例は以下となります。
書式パターン①
TMPという変数が1だった場合は、「変数TMPは1です。」と出力するシェルスクリプトを書式パターン①で作成しています
#!/bin/bash
# 変数TMPの値を設定
TMP=1
# 条件判定とメッセージの出力
if [ "$TMP" -eq 1 ]; then
echo "変数TMPは1です。"
fi
実際に実行してみると以下のようになります。
例では、変数TMPに1を代入しているので、条件に一致した場合の結果となっています。
# ./test1.sh
変数TMPは1です。
書式パターン②
TMPという変数が1だった場合は、「変数TMPは1です。」と出力し、
そうでない場合は、「変数TMPは1ではありません。」と出力するシェルスクリプトを書式パターン②で作成しています。
#!/bin/bash
# 変数TMPの値を設定
TMP=2
# 条件判定とメッセージの出力
if [ "$TMP" -eq 1 ]; then
echo "変数TMPは1です。"
else
echo "変数TMPは1ではありません。"
fi
実際に実行してみると以下のようになります。
例では、変数TMPに2を代入しているので、条件に一致しなかった場合の結果となっています。
# ./test2.sh
変数TMPは1ではありません。
書式パターン③
TMPという変数が1だった場合は、「変数TMPは1です。」と出力し、
TMPという変数が2だった場合は、「変数TMPは2です。」と出力し、
そうでない場合は、「変数TMPは1でも2でもありません。」と出力するシェルスクリプトを書式パターン③で作成しています。
#!/bin/bash
# 変数TMPの値を設定
TMP=3
# 条件判定とメッセージの出力
if [ "$TMP" -eq 1 ]; then
echo "変数TMPは1です。"
elif [ "$TMP" -eq 2 ]; then
echo "変数TMPは2です。"
else
echo "変数TMPは1でも2でもありません。"
fi
実際に実行してみると以下のようになります。
例では、変数TMPに3を代入しているので、条件1と条件2のどちらにも一致しなかった場合の結果となっています。
# ./test3.sh
変数TMPは1でも2でもありません。