Le traitement des chaînes fait partie de tout langage de programmation. Les scripts shell bash ne sont pas différents. Même la syntaxe est à peu près la même.
Dans ce rapide tutoriel, je vais vous montrer comment comparer des chaînes dans des scripts shell Bash.
Comparaison de chaînes bash
Voici comment comparer les chaînes dans Bash.
if [ "$string1" == "$string2" ]
Vous pouvez également utiliser une chaîne directement au lieu d'utiliser une variable.
if [ "$string1" == "This is my string" ]
Laissez-moi vous le montrer avec des exemples appropriés.
Vérifier si deux chaînes sont égales
Si vous voulez vérifier si deux chaînes sont égales, voici un exemple :
#!/bin/bash
string1="MyString"
string2="MyString"
if [ "$string1" == "$string2" ]
then
echo "Equal Strings"
else
echo "Strings not equal"
fi
Astuce :faites attention aux espaces
Il doit y avoir un espace entre le [
et le nom de la variable et l'opérateur d'égalité ==. Si vous manquez l'un des espaces ici, vous verrez une erreur comme "opérateur unaire attendu" ou "]".
Vérifier si les chaînes ne sont pas égales dans Bash
Au lieu de vérifier la qualité, faisons le contraire et vérifions l'inégalité. Bash fournit également l'opérateur de négation afin que vous puissiez facilement utiliser la condition "si différent" dans les scripts shell.
if [ "$string1" != "Not MyString" ]
L'exemple complet ressemble à ceci :
#!/bin/bash
string1="MyString"
if [ "$string1" != "Not MyString" ]
then
echo "Not Equal Strings"
else
echo "Strings equal"
fi
Vérifier si la chaîne est nulle ou vide dans Bash
Contrairement à d'autres langages comme C++, dans Bash, vous pouvez vérifier si la chaîne est nulle ou vide avec une seule commande :
if [ -z "$VAR" ]
Le -z vérifie en fait si la longueur de la variable est nulle ou non. Si la variable n'est pas définie ou si elle est vide (égale à ""), la longueur sera nulle et donc la condition retournera vraie.
Un exemple complet peut être vu ici :
#!/bin/bash
string1=
string2=""
if [ -z "$string1" ]
then
echo "Null Strings"
fi
if [ -z "$string2"]
then
echo "Empty String"
fi
Remarque sur l'utilisation du crochet simple "[]" et du crochet double "[[]]" dans les scripts bash
Vous pouvez également utiliser l'instruction if avec des doubles crochets comme ceci :
if [[ "$string1" == "My String" ]]
La parenthèse unique est l'ancienne convention Posix et elle présente quelques défauts. Si vous n'utilisez pas les guillemets doubles autour des variables et que la variable n'est pas définie, elle disparaîtra du code et cela entraînera une erreur de syntaxe.
if [ $string1 == "My String" ]
Si la variable $string1 est vide ou n'est pas définie dans le code ci-dessus, cette ligne deviendra équivalente à
if [ == "$string2" ]
Conclusion
J'espère que ce petit tutoriel rapide vous a aidé à comparer les chaînes dans les scripts shell bash. Je recommande également de lire un autre tutoriel rapide sur la commande bash sleep.
Si vous avez des questions ou des suggestions, n'hésitez pas à laisser un commentaire ci-dessous.