Vergleich von Saiten in einem praktischen Tutorial vergleicht

Vergleich von Saiten in einem praktischen Tutorial vergleicht

Das Vergleich von Zeichenfolgen ist eine häufige Aufgabe bei der Arbeit mit Shell -Skripten, Benutzereingaben oder String -Daten. In der Schale müssen Sie möglicherweise überprüfen, ob in einer anderen Zeichenfolge ein Wert vorhanden ist, und finden Sie, ob zwei Zeichenfolgen die gleiche Länge haben, auf den Beginn oder das Ende eines Wortes oder einen anderen Vergleichstyp testen. Die Standard -Unix -Tools bieten nicht viele Optionen zum Vergleich von Zeichenfolgen. Der traditionelle lexikalische Vergleich (wie die Überprüfung, ob zwei Wörter die gleiche Länge haben und jedes Zeichen einzeln vergleichen) ist schwer effizient im Code zu implementieren und ist für eine dynamische Sprache wie Bash nicht so wertvoll.

Dieser Artikel erläutert verschiedene Möglichkeiten, Strings in Bash und mehrere verwandte Befehle zu vergleichen.

String -Vergleich Operatoren

Wir können Vergleichsbetreiber mit Bash verwenden, wenn Aussagen zwei Zeichenfolgen vergleichen,. Hier ist die Liste der Vergleichsbetreiber, um mit Saiten in der Bash -Shell zu arbeiten.

OperatorEinzelheiten
["String1" == "String2"]Gibt true zurück, wenn beide Saiten gleich sind.
["String1" != "String"Gibt true zurück, wenn beide Saiten nicht gleich sind.
["String = ~ regex]Vergleichen Sie String1 mit regulärem Ausdruck und geben Sie echte Übereinstimmungen zurück
[-z "String"]Return true, wenn die angegebene Zeichenfolgelänge Null ist (0)
[-n "String"]Geben Sie True zurück, wenn die angegebene Zeichenfolgelänge nicht Null ist

Jetzt werden wir den oben genannten Vergleichsbetreiber nacheinander mit Beispielen diskutieren.

Der Vergleich von zwei Zeichenfolgen ist gleich?

Wenn Sie überprüfen müssen, ob zwei Zeichenfolgen gleich sind, verwenden Sie die == Operator. Diese Betreiber vergleichen den linken Operanden mit dem rechten Operanden und geben true zurück, wenn beide übereinstimmen.

Lassen Sie uns mit einem Beispiel verstehen. In einem Shell -Skript initialisieren Sie zwei Variablen mit einer Zeichenfolge. Verwenden Sie dann die IF -Anweisung, um zu vergleichen, ob beide Zeichenfolgen gleich sind oder nicht, die == Operator.

#!/usr/bin/env bash str1 = "tecadmin" str2 = "tecadmin" if ["$ str1" == "$ str2"] dann echo "beide Zeichenfolgen sind gleich" else echo ". Beide Saiten sind nicht gleich" fi
1234567891011#!/usr/bin/env bash str1 = "tecadmin" str2 = "tecadmin" if ["$ str1" == "$ str2"] dann echo "beide Zeichenfolgen sind gleich" else echo ". Beide Saiten sind nicht gleich" fi

Führen Sie das obige Shell -Skript in einer Bash -Shell aus und prüfen Sie nach den Ergebnissen.

Ausgang: Beide Saiten sind gleich 

Ändern Sie nun die Werte von beiden Variablen mit unterschiedlichen Zeichenfolgen. Dann wieder das Skript und sehen Sie die Ergebnisse an.

Überprüfen Sie, ob zwei Saiten nicht gleich sind (!=))

Manchmal müssen wir überprüfen, ob beide Saiten nicht gleich sind. Sie können verwenden != Operator testen, ob zwei Zeichenfolgen nicht gleich sind. Lassen Sie uns ein Beispiel erkundigen:

#!/usr/bin/env bash str1 = "tecadmin" str2 = "helloWorld" ## Überprüfen Sie, ob beide Saiten nicht gleich sind, wenn ["$ str1" nicht gleich sind, wenn ["$ str1" != "$ Str2"] dann echo "wahr, beide Saiten sind nicht gleich" sonst echo "falsch, beide Saiten sind gleich" fi
123456789101112#!/usr/bin/env bash str1 = "tecadmin" str2 = "helloWorld" ## Überprüfen Sie, ob beide Saiten nicht gleich sind ["$ str1" != "$ Str2"] dann echo "wahr, beide Saiten sind nicht gleich" sonst echo "falsch, beide Saiten sind gleich" fi

Führen Sie das obige Shell -Skript in einer Bash -Shell aus und prüfen Sie nach den Ergebnissen.

Ausgabe: Wahr: Beide Saiten sind nicht gleich 

Vergleiche Saiten mit regelmäßigem Ausdruck

Um Strings mit regulären Ausdrücken in Bash zu vergleichen, können Sie den Befehl „Grep“ mit der Option „-e“ (Extended Regex) verwenden. Der Befehl „Grep“ durchsucht nach einem Zeichenfolge nach einem Muster und gibt einen Erfolgs -Beitverlauf -Code (0) zurück, wenn das Muster gefunden wird, und ein Fehler beim Abschlussprozess (1), wenn das Muster nicht gefunden wird.

Hier ist ein Beispiel für die Verwendung des Befehls „Grep“, um eine Zeichenfolge mit einem regulären Ausdruck zu vergleichen:

String = "Hallo Welt", wenn echo "$ string" | grep -e "^Hallo"; dann Echo "Match gefunden" fand "else echo" match nicht gefunden "fi
123456String = "Hallo Welt", wenn echo "$ string" | grep -e "^Hallo"; dann Echo "Match gefunden" fand "else echo" match nicht gefunden "fi

Wir können die Zeichenfolge auch mit einem regulären Ausdruck in Bash -Skripten vergleichen. Während Sie den String -Vergleich mit einem regulären Ausdruck mit einer IF -Anweisung verwenden, sollten Sie immer mit beischließen [[]] Zitate. Das folgende Beispiel zeigt Ihnen bei der Überprüfung, ob die Variable die Zeichenfolge enthält, die mit einer bestimmten Zeichenfolge beginnt.

#!/usr/bin/env bash str = "tecadmin" if [["$ str" = ~ ^tec]] dann echo "Ja, der reguläre Ausdruck übereinstimmt" else echo "reguläre Ausdruck nicht übereinstimmt" fi
12345678910#!/usr/bin/env bash str = "tecadmin" if [["$ str" = ~ ^tec]] dann echo "Ja, der reguläre Ausdruck übereinstimmt" else echo "reguläre Ausdruck nicht übereinstimmt" fi
Ausgabe: Ja, der reguläre Ausdruck stimmt überein 

Lassen Sie uns ein anderes Beispiel überprüfen. In diesem Skript fordern wir den Benutzer auf, eine Nummer einzugeben. Überprüfen Sie dann, ob der Eingangswert eine Zahl ist oder nicht. Ein Zahlenbehälter die Ziffern zwischen 0 und 9.

#!/usr/bin/env bash read -p "Eingeben Sie eine Zahl ein:" var ## Überprüfen Sie, ob der Eingangswert eine Zahl ist, wenn [["$ var" = ~ ^[0-9]+$]] dann echo "gegeben" Eingabe ist eine Zahl "sonst echo" sorry, Eingabe ist keine Zahl "fi
1234567891011#!/usr/bin/env bash read -p "Eingeben Sie eine Zahl ein:" var ## Überprüfen Sie, ob der Eingangswert ein Number [["$ var" = ~ ^[0-9]+$] ist. Ist eine Nummer "sonst echo" sorry, Eingabe ist keine Nummer "fi

Führen Sie das obige Bash -Skript aus und geben Sie die Eingabe an, wenn Sie aufgefordert werden.

Erster Lauf: Eingeben Sie eine Zahl ein: 12 Geben Sie die Eingabe eine Zahl ab 

Führen Sie dieses Skript erneut aus, geben aber diesmal einen nicht numerischen Wert ein und sehen Sie die Ergebnisse an.

Zweiter Lauf: Geben Sie eine Nummer ein: 1234a sorry, die Eingabe ist keine Zahl 

Überprüfen Sie, ob eine Zeichenfolge leer ist

Um zu überprüfen, ob eine Zeichenfolge in Bash leer ist, können Sie die folgende Syntax verwenden:

wenn [-z "$ string"]; dann echo "String ist leer" sonst echo "String ist nicht leer" fi
12345wenn [-z "$ string"]; dann echo "String ist leer" sonst echo "String ist nicht leer" fi

Der "-Z" Der Bediener wird verwendet, um zu testen, ob die Länge der Zeichenfolge Null ist. Wenn die Länge der Zeichenfolge Null ist, gibt der Ausdruck in den Quadratklammern wahr und die Klausel „Dann“ wird ausgeführt. Wenn die Länge der Zeichenfolge größer als Null ist, gibt der Ausdruck false zurück und die Klausel "else" wird ausgeführt.

Abschluss

Abschließend ist der Vergleich von Zeichenfolgen in Bash ein grundlegender Aspekt des Shell -Skripts, der verwendet werden kann, um Entscheidungen zu treffen, den Fluss Ihrer Skripte zu steuern und Daten zu verarbeiten. In diesem praktischen Tutorial haben wir die Grundlagen des Saitenvergleichs in Bash behandelt, einschließlich der verschiedenen Vergleichsbetreiber, Syntax und gemeinsamen Fallstricks. Wir haben auch Beispiele und Übungen bereitgestellt, um die Konzepte in diesem Tutorial zu üben und zu beherrschen. Wenn Sie den in diesem Tutorial beschriebenen Best Practices befolgen, können Sie Skripte schreiben, die robuster, zuverlässiger und effizienter sind. Unabhängig davon.