Estoy empezando a aprender a escribir scripts para el terminal bash, pero no puedo encontrar la manera de hacer que las comparaciones funcionen correctamente. El script que estoy usando es:
echo "enter two numbers";
read a b;
echo "a=$a";
echo "b=$b";
if [ $a \> $b ];
then
echo "a is greater than b";
else
echo "b is greater than a";
fi;
El problema es que compara el número desde el primer dígito, es decir, 9 es mayor que 10, pero 1 es mayor que 09.
¿Cómo puedo convertir los números en un tipo para hacer una comparación verdadera?
;
al final de la línea son superfluas. No hace ningún daño, solo un desperdicio de pulsaciones de teclas (a menos que disfrute de escribir punto y coma).
10#$number
así se number=09; echo "$((10#$number))"
generará 9
mientras echo $((number))
que producirá un error de "valor demasiado grande para la base".
>
que hace el operador en el [
comando es comparar el orden en que deben ordenarse dos cadenas, en lugar del orden en que se ordenarían como números. Puedes encontrar más información en man test
.