シェルスクリプト 算術式の評価

以前の記事で、シェルスクリプトの条件式は、他のプログラミング言語と比べて異質であるという話をしました。

本記事では、他のプログラミング言語と同様に条件式を用いる方法を紹介します。

方法

(( ))の中に条件式を入れることで、他のプログラミング言語と同様に条件式を用いることができます。

例を示します。

算術式を使用しない例

num=12
if [ $num -lt 10 ]
then
    echo "This number is grater than 10."
fi

算術式を使用した例

num=12
if (( $num > 10 ))
then
    echo "This number is grater than 10."
fi
注意
この算術式は、bashしか使えません。

試しに、算術式を使用した上記のプログラムをbashコマンドとshコマンドで比較しましょう。

bashコマンド

$ bash sample.sh
This number is grater than 10.

shコマンド

$ sh sample.sh
sample.sh: 4: 12: not found

このようにshコマンドでは、使用できません。他のシェルも同様です。

次に算術式を用いた構文を紹介します。

数値の比較

条件式実行結果
数値1<= 数値2数値2が数値1より小さいか等しければ真
数値1 >= 数値2数値1が数値2より小さいか等しければ真
数値1 < 数値2数値2が数値1より大きいと真
数値1 > 数値2数値1が数値2より大きいと真
数値1 == 数値2数値1と数値2が等しければ真
数値1!= 数値2数値1と数値2が等しくなければ真

文字列の比較

条件式実行結果
文字列1== 文字列22つの文字列が等しければ真
文字列1 != 文字列22つの文字列が等しくなければ真

論理結合

条件式実行結果
!条件式条件式が偽であれば真
条件式1 && 条件式2条件式1と条件式2の両方が真であれば真
条件式1 || 条件式2条件式1か条件式2のいずれかが真であれば真

まとめ

(( ))の中に条件式を入れることで、他のプログラミング言語と同様に条件式を用いることができます。

しかし、bashコマンドのみ使用できる構文です。