
Eine der häufigsten Operationen bei der Arbeit mit Zeichenfolgen in Bash besteht darin, festzustellen, ob eine Zeichenfolge eine andere Zeichenfolge enthält oder nicht.
In diesem Artikel zeigen wir Ihnen mehrere Möglichkeiten, um zu überprüfen, ob eine Zeichenfolge eine Teilzeichenfolge enthält.
Verwendung von Platzhaltern #
Der einfachste Ansatz besteht darin, die Teilzeichenfolge mit Sternchen-Platzhaltersymbolen (Sternchen) *
zu umgeben und vergleichen Sie es mit der Zeichenfolge. Wildcard ist ein Symbol, das verwendet wird, um null, ein oder mehrere Zeichen darzustellen.
Wenn der Test true
zurückgibt , der Teilstring ist im String enthalten.
Im folgenden Beispiel verwenden wir die if-Anweisung und den Gleichheitsoperator (==
), um zu prüfen, ob der Teilstring SUB
befindet sich in der Zeichenfolge STR
:
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
if [[ "$STR" == *"$SUB"* ]]; then
echo "It's there."
fi
Wenn es ausgeführt wird, gibt das Skript Folgendes aus:
It's there.
Verwendung des Case-Operators #
Anstelle der if-Anweisung können Sie auch die case-Anweisung verwenden, um zu prüfen, ob ein String einen anderen String enthält oder nicht.
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
case $STR in
*"$SUB"*)
echo -n "It's there."
;;
esac
Regex-Operator verwenden #
Eine weitere Möglichkeit, um festzustellen, ob ein bestimmter Teilstring innerhalb eines Strings vorkommt, ist die Verwendung des Regex-Operators =~
. Wenn dieser Operator verwendet wird, wird der richtige String als regulärer Ausdruck betrachtet.
Der Punkt gefolgt von einem Sternchen .*
stimmt mit null oder mehr Vorkommen eines beliebigen Zeichens außer einem Zeilenumbruchzeichen überein.
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
if [[ "$STR" =~ .*"$SUB".* ]]; then
echo "It's there."
fi
Das Skript gibt Folgendes wieder:
It's there.
Verwendung von Grep #
Der Befehl grep kann auch verwendet werden, um Strings in einem anderen String zu finden.
Im folgenden Beispiel übergeben wir den String $STR
als Eingabe für grep und prüfen, ob die Zeichenfolge $SUB
befindet sich in der Eingabezeichenfolge. Der Befehl gibt true
zurück oder false
nach Bedarf.
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
if grep -q "$SUB" <<< "$STR"; then
echo "It's there"
fi
Das -q
Die Option weist grep an, leise zu sein und die Ausgabe wegzulassen.
Schlussfolgerung #
Das Prüfen, ob ein String einen Teilstring enthält, ist eine der grundlegendsten und am häufigsten verwendeten Operationen beim Bash-Scripting.
Nachdem Sie dieses Tutorial gelesen haben, sollten Sie ein gutes Verständnis dafür haben, wie Sie testen können, ob eine Zeichenfolge eine andere Zeichenfolge enthält. Sie können auch andere Befehle wie awk
verwenden oder sed
zum Testen.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.