Ich fange an zu lernen, wie man Skripte für das Bash-Terminal schreibt, aber ich kann nicht herausfinden, wie die Vergleiche richtig funktionieren. Das Skript, das ich verwende, ist:
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;
Das Problem ist, dass es die Zahl von der ersten Ziffer an vergleicht, dh 9 ist größer als 10, aber 1 ist größer als 09.
Wie kann ich die Zahlen in einen Typ umwandeln, um einen echten Vergleich durchzuführen?
;
am Ende der Zeile überflüssig. Kein Schaden anrichten, nur eine Verschwendung von Tastenanschlägen (es sei denn, Sie tippen gerne Semikolons).
10#$number
so number=09; echo "$((10#$number))"
ausgeben wird , 9
während echo $((number))
produziert ein „Wert zu groß für die Basis“ -Fehler.
>
Operator im [
Befehl vergleicht die Reihenfolge, in der zwei Zeichenfolgen sortiert werden sollen, und nicht die Reihenfolge, in der sie als Zahlen sortiert werden. Weitere Informationen finden Sie in man test
.