Sto iniziando a imparare a scrivere script per il terminale Bash, ma non riesco a capire come far funzionare correttamente i confronti. Lo script che sto usando è:
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;
Il problema è che confronta il numero dalla prima cifra in poi, ovvero 9 è maggiore di 10, ma 1 è maggiore di 09.
Come posso convertire i numeri in un tipo per fare un vero confronto?
;alla fine della riga sono superflui. Non fare alcun male, solo uno spreco di tasti (a meno che non ti piaccia digitare i punti e virgola).
10#$numbercosì number=09; echo "$((10#$number))"verrà emesso 9mentre echo $((number))produrrà un errore "valore troppo grande per base".
>operatore fa nel [comando è confrontare l'ordine in cui due stringhe dovrebbero essere ordinate, piuttosto che l'ordine in cui ordinerebbero come numeri. Puoi trovare maggiori informazioni in man test.