Vergleichen von Zahlen in Bash
Bin ich angefangen zu lernen, zum schreiben von Skripts für die bash-terminal, aber ich kann nicht herausfinden, wie man die Vergleiche richtig zu arbeiten. 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, das ich habe, ist, dass es vergleicht die Nummer aus der ersten Ziffer auf, also 9 ist größer als 10000, aber 1 ist größer als 09
Wie kann ich umwandeln der zahlen in einer Art zu tun, einen echten Vergleich?
InformationsquelleAutor der Frage advert2013 | 2013-09-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der bash, sollten Sie Ihre check-in arithmetischen Kontext:
Für POSIX-shells, die keine Unterstützung
(())
verwenden, können Sie-lt
und-gt
.Können Sie eine vollständige Liste der Vergleichsoperatoren mit
help test
.InformationsquelleAutor der Antwort jordanm
Schlicht und einfach
Können Sie aus dieses cheatsheet wenn Sie wollen mehr Anzahl comparsions in die wunderbare Welt der Bash-Skripting.
Kurz, Ganzzahlen können nur verglichen werden mit:
InformationsquelleAutor der Antwort Mincă Daniel Andrei
Es ist auch eine nette Sache einige Leute vielleicht nicht wissen, über:
Dieser code druckt die kleinste Zahl aus
a
undb
InformationsquelleAutor der Antwort Aleks-Daniel Jakimenko-A.
Bash-Skripte, die ich bevorzuge, dies zu tun, da richtet es sich mehr als eine bedingte operation im Gegensatz zur Verwendung von
(( ))
die mehr von Arithmetik.Es sei denn, ich mache komplexe Stoffe wie
Aber jeder hat halt seine eigenen Vorlieben. Traurige Sache ist, dass manche Menschen vorschreiben, Ihre inoffizielle standards.
Update:
Können Sie dies auch tun:
Was können Sie hinzufügen, etwas anderes, was Sie tun könnten, mit
[[ ]]
neben arithmetischen stopft.InformationsquelleAutor der Antwort konsolebox
Dieser code kann auch vergleichen schwimmt. Es ist mit awk (es ist nicht Reine bash), aber das sollte nicht das problem sein, wie awk ist eine standard-POSIX-Befehl, der wahrscheinlich geliefert standardmäßig mit dem Betriebssystem.
Um es kürzer zu machen für den Einsatz, verwenden Sie diese Funktion:
InformationsquelleAutor der Antwort Vangelis Tasoulas
Ich dies Problem gelöst, indem eine kleine Funktion zum konvertieren von version strings in einfachen ganzzahligen Werte, die verglichen werden können:
Diesem macht zwei wichtige Annahmen:
Beispielsweise
Beispiel testen, ob
npm
Befehl erfüllt die Mindestanforderung ...InformationsquelleAutor der Antwort broofa
Wenn Sie schwimmt, Sie können eine Funktion schreiben und verwenden Sie dann, dass z.B.
InformationsquelleAutor der Antwort Sue