다음 두 가지 값이 있습니다.
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"