bashを利用しif .. then .. fi を利用したサンプルシェルスクリプトを以下に記します。
下表に記す文字列により、数値比較ができます。
-eq | 等しいかをチェック 数値 = 数値 | equal |
-ne | 異なるかをチェック 数値 ≠ 数値 | not equal |
-lt | 数値 < 数値をチェック | less than |
-le | 数値 ≦ 数値をチェック | less than or equal |
-gt | 数値 > 数値をチェック | greater than |
-ge | 数値 ≧ 数値をチェック | greater than or equal |
数値の比較条件が成り立つ場合、$?に0がセットされます。
数値の比較条件が成り立たない場合は、$?に1がセットされます。
このeq, ne, lt, le, gt, geなどは、<>が使えなかった時代のFORTRAN言語の表記を踏襲したらしいです。
(正確な情報かは保証できませんが…)
以下のサンプルシェルスクリプトは、2つの数値引数を比較します。
尚、引数に数値以外の文字列を使用した場合のエラー処理は行っていません。
#!/bin/bash function usage { echo Usage: echo -e \\t`basename $0` num1 num2 exit 1 } if [ $# -ne 2 ]; then usage fi # -eq : equal if [ $1 -eq $2 ]; then echo "$1 = $2" fi # -ne : not equal if [ $1 -ne $2 ]; then echo "$1 != $2" fi # -lt : less than if [ $1 -lt $2 ]; then echo "$1 < $2" fi # -le : less than or equal if [ $1 -le $2 ]; then echo "$1 <= $2" fi # -gt : greater than if [ $1 -gt $2 ]; then echo "$1 > $2" fi # -ge : greater than or equal if [ $1 -ge $2 ]; then echo "$1 >= $2" fi
$ ./sample.sh 1 1 1 = 1 1 <= 1 1 >= 1 $ ./sample.sh 1 2 1 != 2 1 < 2 1 <= 2 $ ./sample.sh 2 1 2 != 1 2 > 1 2 >= 1