Isso é semelhante a pergunta sobre como obter o mínimo / máximo de dois números , mas estou interessado em faça o mesmo com números flutuantes.
Então, basicamente, estou tentando usar a expansão aritmética da casca usando o operador ternário, mas só funciona para os inteiros.
Por exemplo, eu gostaria de pegar dois números e subtrair alguns números e verificar se o resultado está acima de zero, se não, configurá-lo acima de zero.
Inteiros
Isso funciona muito bem:
value=5
echo $(( $(bc <<< "$value - 10") > 0 ? $(bc <<< "$value - 10") : 1 ))
e devolve 1
conforme esperado.
Flutuadores
No entanto, quando estou tentando convertê-lo em comparação de flutuação, isso não funciona, por exemplo,
value=0.5
echo $(( $(bc <<< "$value - 0.8") > 0 ? $(bc <<< "$value - 0.8") : 0.1 ))
que indica o erro:
-bash: -.3 > 0 ? -.3 : 0.1 : syntax error: operand expected (error token is ".3 > 0 ? -.3 : 0.1 ")
Apesar de bc
estar retornando o número da direita:
$ echo $(bc <<< "$value - 0.8")
-.3
Eu presumo que o bash não pode lidar com essa comparação de float.
Existe alguma solução simples para obter min / max para os números flutuantes (como explicado acima)?