GNU/Linux >> Tutoriels Linux >  >> Linux

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

L'une des opérations les plus courantes lorsque vous travaillez avec des chaînes dans Bash consiste à déterminer si une chaîne contient ou non une autre chaîne.

Dans cet article, nous allons vous montrer plusieurs façons de vérifier si une chaîne contient une sous-chaîne.

Utilisation des caractères génériques #

L'approche la plus simple consiste à entourer la sous-chaîne de symboles génériques astérisque (astérisque) * et comparez-le avec la chaîne. Le joker est un symbole utilisé pour représenter zéro, un ou plusieurs caractères.

Si le test renvoie true , la sous-chaîne est contenue dans la chaîne.

Dans l'exemple ci-dessous, nous utilisons l'instruction if et l'opérateur d'égalité (== ) pour vérifier si la sous-chaîne SUB se trouve dans la chaîne STR :

#!/bin/bash

STR='GNU/Linux is an operating system'
SUB='Linux'
if [[ "$STR" == *"$SUB"* ]]; then
  echo "It's there."
fi

Une fois exécuté, le script affichera :

It's there.

Utilisation de l'opérateur de cas #

Au lieu d'utiliser l'instruction if, vous pouvez également utiliser l'instruction case pour vérifier si une chaîne inclut ou non une autre chaîne.

#!/bin/bash

STR='GNU/Linux is an operating system'
SUB='Linux'

case $STR in

  *"$SUB"*)
    echo -n "It's there."
    ;;
esac

Utilisation de l'opérateur Regex #

Une autre option pour déterminer si une sous-chaîne spécifiée se produit dans une chaîne consiste à utiliser l'opérateur regex =~ . Lorsque cet opérateur est utilisé, la chaîne de droite est considérée comme une expression régulière.

Le point suivi d'un astérisque .* correspond à zéro ou plusieurs occurrences de n'importe quel caractère sauf un caractère de saut de ligne.

#!/bin/bash

STR='GNU/Linux is an operating system'
SUB='Linux'

if [[ "$STR" =~ .*"$SUB".* ]]; then
  echo "It's there."
fi

Le script fera écho à ce qui suit :

It's there.

Utilisation de Grep #

La commande grep peut également être utilisée pour rechercher des chaînes dans une autre chaîne.

Dans l'exemple suivant, nous transmettons la chaîne $STR comme entrée à grep et en vérifiant si la chaîne $SUB se trouve dans la chaîne d'entrée. La commande renverra true ou false le cas échéant.

#!/bin/bash

STR='GNU/Linux is an operating system'
SUB='Linux'

if grep -q "$SUB" <<< "$STR"; then
  echo "It's there"
fi

Le -q l'option indique à grep de se taire, d'omettre la sortie.

Conclusion #

Vérifier si une chaîne contient une sous-chaîne est l'une des opérations les plus élémentaires et les plus fréquemment utilisées dans les scripts Bash.

Après avoir lu ce didacticiel, vous devriez avoir une bonne compréhension de la façon de tester si une chaîne inclut une autre chaîne. Vous pouvez également utiliser d'autres commandes comme awk ou sed pour les tests.

Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.


Linux
  1. Comment vérifier si Bash a la vulnérabilité Shellshock ?

  2. Comment lire une chaîne en tant que numéro hexadécimal dans Bash ?

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

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

  5. Comment cat << EOF fonctionne-t-il dans bash?

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 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 ?

Comment puis-je vérifier les caractères textuels d'une chaîne de commande bash ?