Sie haben also eine lange Zeichenfolge und möchten überprüfen, ob diese Zeichenfolge eine Teilzeichenfolge in Ihrem Bash-Skript enthält.
Es gibt mehrere Möglichkeiten, in der Bash-Shell nach Teilzeichenfolgen zu suchen. Ich werde zuerst einige einfache Beispiele zeigen, gefolgt von einem coolen Bash-Skript, das dieses Konzept in einem realen Szenario verwendet.
Prüfung auf Teilstring in Bash mit if-else-Anweisung
Wenn Sie mit den bedingten Anweisungen in bash vertraut sind, können Sie damit auf folgende Weise prüfen, ob ein String den Teilstring enthält:
if [[ $fullstring == *"$substr"* ]];
Einfaches Beispiel für die Prüfung von Teilstrings
Hier sind die doppelten Klammern notwendig. Ich halte dies für den nativen Weg, da kein anderes Tool verwendet wird. Lassen Sie mich das obige Snippet anhand eines geeigneten Beispiels erläutern.
Initialisieren Sie eine Variable mit einer langen Zeichenfolge:
[email protected]:~$ fullstring="This is a string with a stretch"
Speichern Sie nun das Wort „stretch“ in einer Variablen namens substr1
:
[email protected]:~$ substr="stretch"
Machen wir den Substring-Vergleich:
[email protected]:~$ if [[ $fullstring == *"$substr"* ]]; then
Hier bedeutet * null oder mehr Zeichen. Ich hoffe, Sie sind mit dem Konzept der Anführungszeichen in Bash-Skripten vertraut. Das $substr innerhalb der Anführungszeichen ersetzt es durch seinen Wert.
Grundsätzlich prüfen Sie, ob die vollständige Zeichenfolge mit dem Mustertyp xxxxsubstrxxxx übereinstimmt.
Sie können den Teilstring auch direkt verwenden, anstatt ihn über eine Variable wie diese zu verwenden:
[email protected]:~$ if [[ $fullstring == *"stretch"* ]]; then
Sie verstehen das Wesentliche. Lassen Sie mich dieses Skript mit einer else-Anweisung vervollständigen, die eine alternative Meldung anzeigt, wenn die Teilzeichenfolge nicht gefunden wird:
#!/bin/bash
fullstring="This is a string with a stretch"
substr="stretch"
if [[ $fullstring == *"$substr"* ]]; then
echo "Found $substr!"
else
echo "$substr not found!"
fi
Sie können leicht sehen, dass, wenn Sie das obige Shell-Skript ausführen, es den Teilstring finden wird.
[email protected]:~$ bash substr.sh
Found stretch!
Ein besseres reales Beispiel für das Finden von Teilstrings in bash
Teilzeichenfolgen können in Skripten sehr hilfreich sein, um mit Benutzern zu „interagieren“. Verwenden Sie den Lesebefehl, damit Ihr Bash-Skript Benutzereingaben akzeptiert.
echo "Hey there..what is your name?"
read Name
echo "Hello "$name"! The Matrix Resurrections trailer is here! Is your pill Red or Blue?"
read Pill
if [[ $Pill == *"Red"* || $Pill == *"red"* ]]; then
echo "Welcome..to the real world "$Name"!"
else
echo "Wake Up "$Name"!"
fi
Geben Sie ihm die Ausführungsberechtigung und führen Sie das Skript aus:
[email protected]:~$ chmod +x makeyourchoice.sh
[email protected]:~$ ./makeyourchoice.sh
Ausgabe für obiges Skript:
Hey there..what is your name?
avimanyu
Hello avimanyu! The Matrix Resurrections trailer is here! Is your pill Red or Blue?
I have Red pill
Welcome..to the real world avimanyu!
Hier habe ich die if-Bedingung etwas verbessert, indem ich mich um zwei wahrscheinliche Chancen der Groß- und Kleinschreibung gekümmert habe. Nur Red
ist hier der Teilstring. Aber red
ist auch eine mögliche Eingabe. Also habe ich eine weitere Bedingung hinzugefügt. ||
steht für „oder“. Wenn Sie Red
eingeben , es ist eine Teilzeichenfolge. Aber auch wenn red
ist keine, musste ich hinzufügen.
Teilstring in Bash mit dem grep-Befehl finden
Hier ist eine andere Möglichkeit, Teilzeichenfolgen in einer Zeichenfolge in Bash zu finden. Verwenden Sie den grep-Befehl auf diese Weise:
if grep -q "$substr" <<< "$fullstring"; then echo "Found"; fi
Das
Ich hoffe, dieses kurze Tutorial hat Ihnen bei der Suche nach einem bestimmten Teilstring innerhalb eines Strings geholfen. Wenn Sie Fragen oder Anregungen haben, können Sie unten einen Kommentar hinterlassen. Übrigens, für welche Pille hast du dich entschieden? Haben Sie Ihre Wahl getroffen?q
options bedeutet, dass sich grep im stillen Modus befindet und keine Ausgabe anzeigt. Bitte beachten Sie, dass es 3