座敷牢日誌

都落ちした元SEがソフトウェアやネット関連のことを書いています

Bashで小数点を比較

Bashで数値の比較演算を行う場合は, testコマンドを使います.

val1="10"
val2="11"

test $val1 -lt $val2

# or

if [ $val1 -lt $val2 ]; then
    echo "OK"
fi

ところで, 比較する値に小数点が含まれていると, この方法では比較できません. 次のエラーが返されます.

val1="10.1"
val2="11.1"
test $val1 -lt $val2
bash: line 3: test: 10.1: integer expression expected

この場合は, bcコマンドを組み合わせて比較します.

val1="10.1"
val2="11.1"
test $(bc <<< "$val1 < $val2") = "1"

Zshの場合は, もうちょっと簡単に書けますな.

val1=2.1
val2=3.1
test $((val1 < val2)) -eq 1