【初学者向け】Bashで変数を使いこなしたい ~if編~


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

Linuxでは、他の言語と同じくif文で条件分岐をさせることが可能です。
今回は、その基本的な使い方について触れていきます。

 

「if」はどのような時に使うのか

 

「if」構文を使用していく前に、どんなタイミングで使用するのかを知っていたほうが
実際使用するときにイメージしやすいと思います。

これは非常に簡単で、英単語のifと同じ意味で

・「もし〇〇の時、△△する」
・ある条件の時だけ、なにかを実行する
例)値が〇〇より大きいとき、スクリプトを実行する

上記のように条件によって実行結果を分岐させるときに使用します。

 

「if」を使った基本構文

基本的には下記単語を用いて文章を構成します。

 

"文の始まり"=if
"文の終わり"=fi
"その条件が当てはまるとき"=then
"それ以外のとき"=else
"別の条件を使いたいとき"=elif

 

例えば、


if 判定; then
   処理
fi

「判定」の結果が当てはまるとき「処理」を実行する、のようになります。

実演

これを実際に使ってみたいと思います。

■検証環境
・VMware Workstation 16 player上のRHEL8.4にて
・iftext.shという名前のファイルを事前作成済み

 

値が条件の時

i=1

if [ $i == 0 ]; then
    echo "zero"
elif [ $i == 1 ] ; then
    echo "one"
else
    echo "other"
fi
~     

 

viコマンドで上記ファイルを作成して実行すると

[daisuke@localhost ~]$ bash iftext.sh
one

このような結果になります。

 

ここで1行目のiの数字を2に変更してみます。

i=2

if [ $i == 0 ]; then
    echo "zero"
elif [ $i == 1 ] && [ $i -lt 2 ]; then
    echo "one"
else
    echo "other"
fi

これを実行すると、

[daisuke@localhost ~]$ bash iftext.sh
other

このように条件によって結果が変わっていることが確認できました。

 

条件に変数を加えてみたとき

[コマンドには変数を使うことも可能です。

i=0

if [ $i -eq 0 ]; then
    echo $i
else
    echo "other"
fi
[daisuke@localhost ~]$ bash iftext.sh
0

これはi=0ならiをそのまま表示させる関数ですが、上記の応用で
iが偶数か奇数かも表示させることができます。

i=212

    if [ $((i % 2)) -eq 0 ]; then
        echo "even number"
    else
        echo "odd number"
fi

今回は適当に212という数字を入れてみると、

[daisuke@localhost ~]$ bash iftext.sh
even number

きちんと反映されていますね。

 

複数の条件を満たしたい時

 

1つ前の項目で値が偶数か奇数かを判断することができました。

 

ここでは、さらに条件を追加して値が偶数かつ100以下かどうかを判断するスクリプトを作って行きます。

i=50

    if [ $((i % 2)) -eq 0 ] && [ $i -le 100 ]; then
        echo "less than 100 even number"
    else
        echo "other"
fi

例として値を50にした場合は、

[daisuke@localhost ~]$ bash iftext.sh
less than 100 even number

このように50は100以下の偶数の為、指定した文が表示されます。

これを51にすると

[daisuke@localhost ~]$ bash iftext.sh
other

100以下ですが偶数という条件を満たしていないため"other"と表示されました。

まとめ

インフラ環境は様々なトラブルや現象が起こるため、その対策として、「こうなったときは、こうする」という対策が重要になってきます。
その仕組みを学んでおくと環境構築の際など役に立つかもしれませんね。

Last modified: 2023-08-21

Author