GNU/Linux >> Tutoriels Linux >  >> Linux

Comment vérifier si la chaîne contient une sous-chaîne dans Bash

Donc, vous avez une longue chaîne et vous voulez vérifier si cette chaîne contient une sous-chaîne dans votre script bash.

Il existe plusieurs façons de vérifier les sous-chaînes dans le shell bash. Je vais d'abord montrer quelques exemples simples, suivis d'un script bash sympa qui utilise ce concept dans un scénario réel.

Vérification de la sous-chaîne dans bash à l'aide de l'instruction if else

Si vous êtes familier avec les instructions conditionnelles de bash, vous pouvez l'utiliser pour vérifier si une chaîne contient la sous-chaîne de la manière suivante :

if [[ $fullstring == *"$substr"* ]];

Exemple simple pour vérifier la sous-chaîne

Les doubles parenthèses sont nécessaires ici. Je considère que c'est la méthode native car elle n'utilise aucun autre outil. Permettez-moi d'expliquer l'extrait ci-dessus avec un exemple approprié.

Initialiser une variable avec une chaîne longue :

[email protected]:~$ fullstring="This is a string with a stretch"

Maintenant, stockez le mot "stretch" dans une variable appelée substr1 :

[email protected]:~$ substr="stretch"

Faisons la comparaison de sous-chaîne :

[email protected]:~$ if [[ $fullstring == *"$substr"* ]]; then

Ici, * signifie zéro ou plusieurs caractères. J'espère que vous connaissez le concept de guillemets dans les scripts bash. Le $substr à l'intérieur des guillemets le remplace par sa valeur.

Fondamentalement, vous vérifiez si la chaîne complète correspond au type de modèle xxxxsubstrxxxx.

Vous pouvez également utiliser la sous-chaîne directement au lieu de l'utiliser via une variable comme celle-ci :

[email protected]:~$ if [[ $fullstring == *"stretch"* ]]; then

Vous obtenez l'essentiel. Permettez-moi de compléter ce script avec une instruction else qui affiche un message alternatif si la sous-chaîne n'est pas trouvée :

#!/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

Vous pouvez facilement voir que si vous exécutez le script shell ci-dessus, il trouvera la sous-chaîne.

[email protected]:~$ bash substr.sh
Found stretch!

Un meilleur exemple concret pour trouver une sous-chaîne dans bash

Les sous-chaînes peuvent être très utiles dans les scripts pour "interagir" avec les utilisateurs. Utilisez la commande read pour laisser votre script bash accepter les entrées de l'utilisateur.

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

Donnez-lui l'autorisation d'exécution et exécutez le script :

[email protected]:~$ chmod +x makeyourchoice.sh
[email protected]:~$ ./makeyourchoice.sh

Sortie pour le script ci-dessus :

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!

Ici, j'ai légèrement amélioré la condition if en prenant en compte deux chances probables de sensibilité à la casse. Seulement Red est la sous-chaîne ici. Mais red est une entrée possible aussi. J'ai donc ajouté une autre condition. || indique « ou ». Si vous entrez Red , c'est une sous-chaîne. Mais même si red n'en est pas un, j'ai dû l'ajouter.

Rechercher une sous-chaîne dans bash à l'aide de la commande grep

Voici une autre façon de trouver une sous-chaîne dans une chaîne en bash. Utilisez la commande grep de cette manière :

if grep -q "$substr" <<< "$fullstring"; then echo "Found"; fi

Le q options signifie que grep sera en mode silencieux et n'affichera aucune sortie. Veuillez noter qu'il y en a 3 <, pas seulement 2.

J'espère que ce tutoriel rapide vous a aidé à rechercher une sous-chaîne spécifique dans une chaîne. Si vous avez des questions ou des suggestions, n'hésitez pas à laisser un commentaire ci-dessous. Au fait, quelle pilule avez-vous choisie ? Avez-vous fait votre choix ?


Linux
  1. Vérifier si la chaîne contient une sous-chaîne en Python

  2. Comment trouver la longueur d'une chaîne dans Bash [Astuce rapide]

  3. Comment vérifier syslog dans Bash sous Linux ?

  4. Comment vérifier si un fichier est vide dans Bash ?

  5. bash - trouve la position de l'index de chaîne de la sous-chaîne

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment vérifier si une chaîne contient une sous-chaîne dans Bash

Comment vérifier si un fichier ou un répertoire existe dans Bash Shell

Comment vérifier la syntaxe d'un script Bash sans l'exécuter ?

Comment vérifier si ssh-agent est déjà en cours d'exécution dans bash ?