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#$number
così number=09; echo "$((10#$number))"
verrà emesso 9
mentre 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
.