Android

Wie man Strings in Bash vergleicht

Texte vergleichen mit "diff"

Texte vergleichen mit "diff"

Inhaltsverzeichnis:

Anonim

Beim Schreiben von Bash-Skripten müssen Sie häufig zwei Zeichenfolgen vergleichen, um zu überprüfen, ob sie gleich sind oder nicht. Zwei Zeichenfolgen sind gleich, wenn sie dieselbe Länge haben und dieselbe Zeichenfolge enthalten.

In diesem Tutorial wird beschrieben, wie Sie Zeichenfolgen in Bash vergleichen.

Vergleichsoperatoren

Vergleichsoperatoren sind Operatoren, die Werte vergleichen und true oder false zurückgeben. Beim Vergleichen von Zeichenfolgen in Bash können Sie die folgenden Operatoren verwenden:

  • string1 = string2 und string1 == string2 - Der Gleichheitsoperator gibt true zurück, wenn die Operanden gleich sind.
    • Verwenden Sie den Operator = für den test ; then echo "Strings are equal." else echo "Strings are not equal." fi ; then echo "Strings are equal." else echo "Strings are not equal." fi

      Wenn das Skript ausgeführt wird, wird die folgende Ausgabe gedruckt.

      Strings are equal.

      Hier ist ein weiteres Skript, das die Eingaben des Benutzers entgegennimmt und die angegebenen Zeichenfolgen vergleicht. In diesem Beispiel verwenden wir das ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      Führen Sie das Skript aus und geben Sie die Zeichenfolgen ein, wenn Sie dazu aufgefordert werden:

      Enter first string: Linuxize Enter second string: Ubuntu Strings are not equal.

      Sie können auch das logische und && und oder || Saiten vergleichen:

      ] && echo "Equal" || echo "Not equal"

      Not equal

      Überprüfen Sie, ob eine Zeichenfolge eine Teilzeichenfolge enthält

      Es gibt mehrere Möglichkeiten, um zu überprüfen, ob eine Zeichenfolge eine Teilzeichenfolge enthält.

      Ein Ansatz besteht darin, die Teilzeichenfolge mit Sternsymbolen * was bedeutet, dass alle Zeichen übereinstimmen.

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      Das Skript gibt Folgendes wieder:

      It's there.

      Eine andere Option ist die Verwendung des Regex-Operators =~ wie unten gezeigt:

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      Der Punkt gefolgt von einem Sternchen .* Entspricht keinem oder mehreren Vorkommen eines beliebigen Zeichens mit Ausnahme eines Zeilenumbruchs.

      Überprüfen Sie, ob eine Zeichenfolge leer ist

      Häufig müssen Sie auch prüfen, ob eine Variable eine leere Zeichenfolge ist oder nicht. Verwenden Sie dazu die Operatoren -n und -z .

      #!/bin/bash VAR='' if]; then echo "String is empty." fi

      String is empty.

      #!/bin/bash VAR='Linuxize' if]; then echo "String is not empty." fi

      String is not empty.

      Vergleichen von Zeichenfolgen mit dem Falloperator

      Anstelle der Testoperatoren können Sie auch die case-Anweisung verwenden, um Zeichenfolgen zu vergleichen:

      #!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched";; Fedora | CentOS) echo -n "Red Hat";; esac

      Linuxize matched.

      Lexikografischer Vergleich

      Der lexikografische Vergleich ist eine Operation, bei der zwei Zeichenfolgen alphabetisch verglichen werden, indem die Zeichen in einer Zeichenfolge nacheinander von links nach rechts verglichen werden. Diese Art von Vergleich wird selten verwendet.

      Die folgenden Skripte vergleichen zwei Zeichenfolgen lexikografisch:

      #!/bin/bash VAR1="Linuxize" VAR2="Ubuntu" if]; then echo "${VAR1} is lexicographically greater then ${VAR2}." elif]; then echo "${VAR2} is lexicographically greater than ${VAR1}." else echo "Strings are equal" fi

      Das Skript gibt Folgendes aus:

      Ubuntu is lexicographically greater than Linuxize.

      Fazit

      Das Vergleichen von Zeichenfolgen ist eine der grundlegendsten und am häufigsten verwendeten Operationen in der Bash-Skripterstellung. Nachdem Sie dieses Tutorial gelesen haben, sollten Sie wissen, wie man Strings in Bash vergleicht. Sie können sich auch in unserem Handbuch über die Verkettung von Zeichenfolgen informieren.

      Bash-Terminal