2つの数字を比較する方法

2つの数字を比較する方法

次の 2 つの値があります。

val1=13.2.8
val2=15.0.5

val1より小さいことを確認したいと思いますval2。以下を試しました。

echo "if ($val1<$val2) 1" | bc

ただし、次のエラーが発生します。

syntax error on line 1, teletype

一般的な浮動小数点数の場合はうまく機能します。

これを達成するための最良の方法は何ですか?

答え1

これは少なくとも数学的な意味では数字ではありません。おそらくあなたが望むものバージョン文字列比較(GNU(および他の場合も可能)で提供)sort --version-sort/ sort -V

if [[ "$(sort --version-sort <<< "$(printf '%s\n' "$val1" "$val2")" | head --lines=1)" = "$val1" ]]
then
    echo "$val1 <= $val2"
fi

答え2

これらの値に算術比較を使用することはできません。文字列比較を使用する必要があります。 Bashでは「[[」を使用できます。

[[ $val2 > $val1 ]] && echo "$val2 is greater than $val1"

関連情報