Je commence à apprendre à écrire des scripts pour le terminal bash, mais je ne peux pas trouver comment faire fonctionner correctement les comparaisons. Le script que j'utilise est:
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;
Le problème est qu'il compare le nombre à partir du premier chiffre, c'est-à-dire que 9 est supérieur à 10, mais 1 est supérieur à 09.
Comment puis-je convertir les nombres en un type pour faire une vraie comparaison?
;
fin de ligne est superflue. Ne pas faire de mal, juste un gaspillage de touches (sauf si vous aimez taper des points-virgules).
10#$number
ainsi number=09; echo "$((10#$number))"
sera généré 9
tandis que echo $((number))
produira une erreur "valeur trop grande pour la base".
>
opérateur fait dans la [
commande est de comparer l'ordre dans lequel les deux chaînes doivent être triées, plutôt que l'ordre dans lequel elles seraient triées sous forme de nombres. Vous pouvez trouver plus d'informations dans man test
.