Der Umgang mit Strings ist Teil jeder Programmiersprache. Bash-Shell-Scripting ist nicht anders. Sogar die Syntax ist ziemlich gleich.
In diesem kurzen Tutorial zeige ich Ihnen, wie Sie Zeichenfolgen in Bash-Shell-Skripten vergleichen.
Bash-String-Vergleich
So vergleichen Sie Strings in Bash.
if [ "$string1" == "$string2" ]
Sie können statt einer Variablen auch direkt einen String verwenden.
if [ "$string1" == "This is my string" ]
Lassen Sie es mich Ihnen anhand geeigneter Beispiele zeigen.
Prüfe, ob zwei Strings gleich sind
Wenn Sie überprüfen möchten, ob zwei Strings gleich sind, hier ein Beispiel:
#!/bin/bash
string1="MyString"
string2="MyString"
if [ "$string1" == "$string2" ]
then
echo "Equal Strings"
else
echo "Strings not equal"
fi
Tipp:Achten Sie auf die Leerzeichen
Zwischen [
muss ein Leerzeichen stehen und den Variablennamen und den Gleichheitsoperator ==. Wenn Sie hier eines der Leerzeichen auslassen, sehen Sie einen Fehler wie „unärer Operator erwartet“ oder fehlendes „]“.
Überprüfen Sie, ob Strings in Bash nicht gleich sind
Anstatt die Qualität zu prüfen, machen wir das Gegenteil und prüfen die Ungleichheit. Bash bietet auch den Negationsoperator, sodass Sie die Bedingung „if not equal“ in Shell-Skripten problemlos verwenden können.
if [ "$string1" != "Not MyString" ]
Das vollständige Beispiel sieht so aus:
#!/bin/bash
string1="MyString"
if [ "$string1" != "Not MyString" ]
then
echo "Not Equal Strings"
else
echo "Strings equal"
fi
Überprüfen Sie, ob die Zeichenfolge in Bash null oder leer ist
Im Gegensatz zu einigen anderen Sprachen wie C++ können Sie in Bash mit einem einzigen Befehl prüfen, ob der String null oder leer ist:
if [ -z "$VAR" ]
Das -z prüft tatsächlich, ob die Länge der Variablen Null ist oder nicht. Wenn die Variable nicht gesetzt oder leer ist (gleich „“), ist die Länge null und die Bedingung gibt daher wahr zurück.
Ein vollständiges Beispiel finden Sie hier:
#!/bin/bash
string1=
string2=""
if [ -z "$string1" ]
then
echo "Null Strings"
fi
if [ -z "$string2"]
then
echo "Empty String"
fi
Hinweis zur Verwendung von einfachen Klammern „[]“ und doppelten Klammern „[[]]“ in Bash-Skripten
Sie können die if-Anweisung auch wie folgt mit doppelten Klammern verwenden:
if [[ "$string1" == "My String" ]]
Die einzelne Klammer ist die alte Posix-Konvention und hat einige Mängel. Wenn Sie die doppelten Anführungszeichen um die Variablen nicht verwenden und die Variable nicht definiert ist, verschwindet sie aus dem Code und dies führt zu einem Syntaxfehler.
if [ $string1 == "My String" ]
Wenn die Variable $string1 leer oder im obigen Code nicht definiert ist, wird diese Zeile äquivalent zu
if [ == "$string2" ]
Fazit
Ich hoffe, dieses kurze Tutorial hat Ihnen beim Vergleichen von Zeichenfolgen in Bash-Shell-Skripten geholfen. Ich empfehle, auch ein weiteres kurzes Tutorial zum Bash-Schlafbefehl zu lesen.
Wenn Sie Fragen oder Anregungen haben, können Sie unten einen Kommentar hinterlassen.