Bash[#7] - Comparer et tester des chaînes de caractères avec Bash
Table des matières:
- Opérateurs de comparaison
- Vérifiez si une chaîne contient une sous-chaîne
- Vérifiez si une chaîne est vide
- Comparaison de chaînes avec l'opérateur Case
- Comparaison lexicographique
- Conclusion
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 = string2etstring1 == string2- L'opérateur d'égalité renvoie vrai si les opérandes sont égaux.- Utilisez l'opérateur
=avec letest; then echo "Strings are equal." else echo "Strings are not equal." fi; then echo "Strings are equal." else echo "Strings are not equal." fiLorsque 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." fiExé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"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." fiLe 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." fiLa 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
-net-z.#!/bin/bash VAR='' if]; then echo "String is empty." fiString is empty.#!/bin/bash VAR='Linuxize' if]; then echo "String is not empty." fiComparaison 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";; esacComparaison 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" fiLe 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
- Utilisez l'opérateur
[Plus d'informations: Comment supprimer les logiciels malveillants sur votre PC Windows] début mai, sans citer les noms des chaînes d'hôtels prétendument impliquées. Il a dit qu'il a maintenant des copies des traductions de l'ordre original, qui "fait allusion à la punition sévère pour le non-respect de l'ordre," dit le communiqué.
"Les hôtels nous ont demandé de préserver leur anonymat; Je ne peux pas divulguer leur identité ... En revanche, ces chaînes hôtelières ont investi des millions de dollars dans leurs propriétés chinoises, et alors qu'elles souhaitent trouver un moyen d'inverser cet ordre Si elles sont spécifiquement identifiées, elles pourraient faire face à de sévères représailles de la part du gouvernement communiste. "
Microsoft profite en vendant des publicités en ligne sur son moteur de recherche à des gangs criminels gérant des sites Web pharmaceutiques offrant des médicaments Selon une nouvelle étude, Microsoft vend des publicités en ligne sur son moteur de recherche à des gangs criminels qui gèrent des sites Web pharmaceutiques offrant des médicaments à des personnes sans ordonnance adéquate.
Environ 89,7% des Selon le rapport, les pharmacies qui paient des publicités sur le dernier moteur de recherche de la société, Bing.com, sont frauduleuses ou se livrent à des activités illégales. KnujOn, une compagnie antispam, et LegitScript, qui offre un service qui vérifie la légitimité de certaines pharmacies en ligne, ont publié le rapport.
Microsoft prend au sérieux les allégations selon lesquelles des partenaires commerciaux se livrent à des pots-de-vin pour obtenir des marchés publics dans trois pays en dehors des États-Unis, le Microsoft a pris mardi au sérieux les accusations selon lesquelles des partenaires commerciaux se seraient livrés à des pots-de-vin pour obtenir des marchés publics dans trois pays en dehors des Etats-Unis, a annoncé mardi le Wall Street Journal. la Securities and Exchange Commission des États-Unis enquê
[Lectures supplémentaires: Votre nouvel ordinateur a besoin de ces 15 programmes gratuits et excellents]







