El seguimiento de la respuesta de Dennis:
pesar de que su respuesta es correcta para los puntos decimales, golpe del lanza (standard_in) 1: error de sintaxis con aritmética de punto flotante.
result1=12
result2=1.27554e-05
if (($(echo "$result1 > $result2" | bc -l))); then
echo "r1 > r2"
else
echo "r1 < r2"
fi
Esto devuelve una salida incorrecta con una advertencia aunque con un código de salida de 0.
(standard_in) 1: error de sintaxis
r1 r2 <
Si bien no hay solución clara a esto (discusión thread 1 y thread 2), utilicé la siguiente solución parcial redondeando los resultados de coma flotante usando awk
seguido por el uso de bc
comando como en la respuesta de Dennis y this thread
Redondear a una posición decimal deseada: Siguiendo recibirá espacio recursivo de directorios en TB con redondeo en el segundo decimal.
result2=$(du -s "/home/foo/videos" | tail -n1 | awk '{$1=$1/(1024^3); printf "%.2f", $1;}')
continuación, puede utilizar la aritmética fiesta que el anterior o el uso de [[ ]]
recinto como en following thread.
if (($(echo "$result1 > $result2" | bc -l))); then
echo "r1 > r2"
else
echo "r1 < r2"
fi
o el uso de -eq
operador donde bc
salida de 1 es cierto y 0 es falsa
if [[ $(bc <<< "$result1 < $result2") -eq 1 ]]; then
echo "r1 < r2"
else
echo "r1 > r2"
fi
¿Cuáles son los errores? mal escrito un nombre de variable. – ormaaj
en realidad los errores se deben a otros problemas. Esto funciona bien –
¿Qué quiere decir con 'valores decimales'? ¿Te refieres a enteros en la base 10, o te refieres a cadenas que representan valores reales no enteros? –