Como comparar dois números

0

Tenho dois valores a seguir:

val1=13.2.8
val2=15.0.5

Quero verificar se val1 é menor que val2 ou não, tentei isso:

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

Mas está lançando o seguinte erro:

syntax error on line 1, teletype

Para números flutuantes normais, está funcionando bem.

Qual é a melhor maneira de conseguir isso?

    
por serenesat 04.07.2017 / 16:08

2 respostas

4

Esses não são números, pelo menos não no sentido matemático. O que você provavelmente quer é uma comparação string de versão , fornecida pelo GNU (e possivelmente outro) sort --version-sort / sort -V :

if [[ "$(sort --version-sort <<< "$(printf '%s\n' "$val1" "$val2")" | head --lines=1)" = "$val1" ]]
then
    echo "$val1 <= $val2"
fi
    
por 04.07.2017 / 16:20
-2

Você não pode usar a comparação aritmética para esses valores. Você deve usar a comparação de strings. No bash você pode usar '[[:

[[ $val2 > $val1 ]] && echo "$val2 is greater than $val1"
    
por 04.07.2017 / 19:15