두 숫자를 비교하는 방법

두 숫자를 비교하는 방법

다음 두 가지 값이 있습니다.

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"

관련 정보