Android

Comment comparer des chaînes en bash

Bash[#7] - Comparer et tester des chaînes de caractères avec Bash

Bash[#7] - Comparer et tester des chaînes de caractères avec Bash

Table des matières:

Anonim

Lors de l'écriture de scripts Bash, vous devrez souvent comparer deux chaînes pour vérifier si elles sont égales ou non. Deux chaînes sont égales lorsqu'elles ont la même longueur et contiennent la même séquence de caractères.

Ce tutoriel décrit comment comparer des chaînes dans Bash.

Opérateurs de comparaison

Les opérateurs de comparaison sont des opérateurs qui comparent des valeurs et renvoient vrai ou faux. Lorsque vous comparez des chaînes dans Bash, vous pouvez utiliser les opérateurs suivants:

  • string1 = string2 et string1 == string2 - L'opérateur d'égalité renvoie vrai si les opérandes sont égaux.
    • Utilisez l'opérateur = avec le 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

      Lorsque le script est exécuté, il imprime la sortie suivante.

      Strings are equal.

      Voici un autre script qui prend l'entrée de l'utilisateur et compare les chaînes données. Dans cet exemple, nous utiliserons le ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      Exécutez le script et entrez les chaînes lorsque vous y êtes invité:

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

      Vous pouvez également utiliser la logique et && et ou || pour comparer des chaînes:

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

      Not equal

      Vérifiez si une chaîne contient une sous-chaîne

      Il existe plusieurs façons de vérifier si une chaîne contient une sous-chaîne.

      Une approche consiste à entourer la sous-chaîne de symboles astérisques * ce qui signifie correspondre à tous les caractères.

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

      Le script fera écho aux éléments suivants:

      It's there.

      Une autre option consiste à utiliser l'opérateur regex =~ comme indiqué ci-dessous:

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

      La période suivie d'un astérisque .* Correspond à zéro ou plusieurs occurrences de n'importe quel caractère à l'exception d'un caractère de nouvelle ligne.

      Vérifiez si une chaîne est vide

      Très souvent, vous devrez également vérifier si une variable est une chaîne vide ou non. Vous pouvez le faire en utilisant les opérateurs -n et -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.

      Comparaison de chaînes avec l'opérateur Case

      Au lieu d'utiliser les opérateurs de test, vous pouvez également utiliser l'instruction case pour comparer les chaînes:

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

      Linuxize matched.

      Comparaison lexicographique

      La comparaison lexicographique est une opération où deux chaînes sont comparées alphabétiquement en comparant les caractères d'une chaîne séquentiellement de gauche à droite. Ce type de comparaison est rarement utilisé.

      Les scripts suivants comparent deux chaînes lexicographiquement:

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

      Le script affichera les éléments suivants:

      Ubuntu is lexicographically greater than Linuxize.

      Conclusion

      La comparaison de chaînes 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 tutoriel, vous devriez avoir une bonne compréhension de la façon de comparer les chaînes dans Bash. Vous pouvez également consulter notre guide sur la concaténation de chaînes.

      terminal bash