Skip to main content

Anfängerleitfaden für BASH - Dinge vergleichen

Anonim
01 von 08

Anfängerleitfaden für BASH - Dinge vergleichen

Im vorherigen Teil des BASH-Tutorials haben wir bedingte Anweisungen betrachtet.

Dieser Leitfaden war sehr lang, zeigte aber nur, wie der Logikfluss gesteuert werden kann. Dieses Handbuch zeigt die verschiedenen Möglichkeiten, wie Sie Variablen vergleichen können.

Das obige Bild zeigt das erste Beispiel in dieser Woche:

#! / bin / bashname1 = "gary"name2 = "bob"if "$ name1" = "$ name2"dann Echo "die Namen stimmen überein"sonst Echo "die Namen stimmen nicht überein"fi

Im obigen Skript habe ich zwei Variablen namens name1 und name2 definiert und ihnen die Werte "gary" und "bob" zugewiesen. Da die Variablen zwischen Anführungszeichen stehen, werden sie als String-Variablen bezeichnet, die im Laufe des Tutorials relevanter werden.

Alles, was das Skript tut, ist, den Wert von $ name1 und $ name2 zu vergleichen, und wenn sie übereinstimmen, geben Sie die Zeichenfolge "die Namen stimmen" aus.

Die Anführungszeichen um die Variablen $ name1 und $ name2 sind wichtig, da das Skript weiterhin funktioniert, wenn der Wert einer der beiden nicht festgelegt wurde.

Wenn zum Beispiel $ name1 nie gesetzt wurde, würden Sie "" mit "bob" vergleichen. Ohne die Anführungszeichen verbleiben Sie bei = "bob", was eindeutig fehlschlägt.

Sie können auch die! = -Notation verwenden, um nicht gleich wie folgt zu definieren:

if "$ name1"! = "$ name2" 02 von 08

Anfängerleitfaden für BASH - Vergleichen von Strings

Im obigen Beispiel vergleicht der Test die gleichen beiden Zeichenfolgen und stellt die Frage, ob Gary vor dem Bob im Alphabet steht?

Die Antwort lautet eindeutig nein.

Das Skript führt den Operator "less than" (<) ein. Da der Operator "less als" auch für die Umleitung verwendet wird, müssen Sie ihn mit einem Schrägstrich () kennzeichnen, damit er weniger bedeutet als der, weshalb ich im obigen Skript "$ name1" <"$ name2" verglichen habe.

Das Gegenteil von weniger als ist offensichtlich größer als. Anstelle von <verwenden >.

Zum Beispiel

if "$ name1" > "$ name2" 03 von 08

Anfängerleitfaden für BASH - Vergleichen von Strings

Wenn Sie testen möchten, ob eine Variable einen Wert hat, können Sie den folgenden Test verwenden:

wenn -n $ name2

Im obigen Skript habe ich getestet, ob $ name2 einen Wert gegeben hat und wenn nicht die Meldung "Es gibt keinen Bob, es wurde nie ein Bob angezeigt".

04 von 08

Anfängerleitfaden für BASH - Vergleichen von Strings

Auf der letzten Folie haben wir überlegt, ob eine Variable gesetzt wurde oder nicht. Es kann vorkommen, dass eine Variable zwar festgelegt wurde, aber tatsächlich keinen Wert hat.

Zum Beispiel:

name1 = ""

Um zu testen, ob eine Variable einen Wert hat oder nicht (d. H. Eine Länge von Null hat), verwenden Sie -z wie folgt:

if -z $ name1

Im obigen Skript habe ich $ name1 auf eine Zeichenfolge mit der Länge Null gesetzt und diese dann mit -z verglichen. Wenn $ name1 null ist, wird die Meldung "gary ist für den Abend ausgegangen" angezeigt.

05 von 08

Anfängerleitfaden für BASH - Vergleichen von Zahlen

Bislang waren alle Vergleiche für Strings. Was ist mit dem Vergleichen von Zahlen?

Das obige Skript zeigt ein Beispiel für den Vergleich zweier Zahlen:

#! / bin / basha = 4b = 5wenn $ a = $ bdann Echo "4 = 5"sonst Echo "4 ist nicht gleich 5"fi

Um eine Variable als Zahl festzulegen, setzen Sie sie einfach ohne Anführungszeichen. Sie können die Zahlen dann mit einem Gleichheitszeichen vergleichen.

Ich bevorzuge jedoch den folgenden Operator, um zwei Zahlen zu vergleichen:

Wenn $ a -eq $ b 06 von 08

Anfängerleitfaden für BASH - Vergleichen von Zahlen

Wenn Sie vergleichen möchten, ob eine Zahl kleiner als eine andere Zahl ist, können Sie den Operator kleiner als (<) verwenden. Wie bei Strings müssen Sie dem Operator weniger als einen Schrägstrich entziehen. ( <).

Ein besserer Weg, Zahlen zu vergleichen, ist die folgende Notation:

  • Weniger als -lt
  • Weniger als oder gleich -le
  • Größer als -gt
  • Größer oder gleich -ge

Zum Beispiel:

wenn $ a -lt $ bwenn $ a -le $ bwenn $ a -ge $ bwenn $ a -gt $ b 07 von 08

Anfängerleitfaden für BASH - Vergleichen von Zahlen

Wenn Sie testen möchten, ob zwei Zahlen unterschiedlich sind, können Sie die Operatoren "Kleiner als" und "Größer als" zusammen (<>) oder -ne wie folgt verwenden:

wenn $ a <> $ bwenn $ a -ne $ b 08 von 08

Anfängerleitfaden für BASH - Vergleichsoperatoren - Zusammenfassung

Wenn Sie die ersten drei Teile dieses Handbuchs verpasst haben, können Sie sie finden, indem Sie auf die folgenden Links klicken:

  • Hallo Welt
  • Eingabeparameter
  • Bedingungen und Variablen

Im nächsten Teil des Guides werde ich die Arithmetik behandeln.