下記のコードを、2.0と10.0で実行したところ、下記のように2.0の方が大きいという結果になってしまいました。
このような処理をするときに何か制約があるのでしょうか?
$ ./test.sh
Enter two values, space seperated
2.0 10.0
2.0 is larger than 10.0
=====================プログラム=======================
#!/bin/bash
# expr prints "1" on success, "0" on failure
echo "Enter two values, space seperated"
read val1 val2
result=`expr $val1 \> $val2`
if [ "$result" -eq "1" ]; then
echo "$val1 is larger than $val2"
exit 0
fi
result=`expr $val2 \> $val1`
if [ "$result" -eq "1" ]; then
echo "$val2 is larger than $val1"
exit 0
fi
echo "the values are equal"
exit 0
普通に不等号で比較すると文字列の比較になってしまいます。
>if文やwhile文の条件で、変数等を数値として評価して比較を行いたい場合は、以下のように記述します。
>数値評価演算子 意味
>数値1 -eq 数値2 数値1と数値2が等しい場合に真
>数値1 -ne 数値2 数値1と数値2が等しくない場合に真
>数値1 -gt 数値2 数値1が数値2より大きい場合に真
>数値1 -lt 数値2 数値1が数値2より小さい場合に真
>数値1 -ge 数値2 数値1が数値2より大きいか等しい場合に真
>数値1 -le 数値2 数値1が数値2より小さいか等しい場合に真
コメント(0件)