次の 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