<Précédent | Table des matières | Suivant>
Expressions de chaîne
Les expressions suivantes sont utilisées pour évaluer les chaînes :
Tableau 27-2 : Tester les expressions de chaîne
L'expression est vraie si...
L'expression est vraie si...
un magnifique un magnifique est non nulle.
-n un magnifique La longueur de un magnifique est supérieur à zéro.
-z un magnifique La longueur de un magnifique est zéro.
string1 = chaîne2 chaîne1 == chaîne2
string1 et string2 sont égaux. Des signes d'égalité simples ou doubles peuvent être utilisés, mais l'utilisation de signes d'égalité doubles est grandement préférée.
string1 != string2 string1 et les string2 ne sont pas égaux. string1 > string2 string1 trie après string2. string1 < string2 string1 trie avant string2.
: la > et les < les opérateurs d'expression doivent être entre guillemets (ou échappés avec une barre oblique inverse) lorsqu'ils sont utilisés avec tester. S'ils ne le sont pas, ils seront interprétés par le shell comme des opérateurs de redirection, avec des résultats potentiellement destructeurs. Notez également que tandis que le bash la documentation indique que l'ordre de tri est conforme à l'ordre de classement de la locale actuelle, ce n'est pas le cas. L'ordre ASCII (POSIX) est utilisé dans les versions de bash jusqu'à et y compris 4.0.
Voici un script qui intègre des expressions de chaîne :
#! / Bin / bash
# test-string : évalue la valeur d'une chaîne ANSWER=peut-être
if [ -z "$REPONSE" ]; alors
echo "Il n'y a pas de réponse." >&2 sortie 1
fi
if [ "$REPONSE" = "oui" ]; puis echo "La réponse est OUI."
elif [ "$REPONSE" = "non" ]; puis echo "La réponse est NON."
elif [ "$REPONSE" = "peut-être" ]; then echo "La réponse est PEUT-ÊTRE."
d'autre
echo "La réponse est INCONNUE."
fi
#! / Bin / bash
# test-string : évalue la valeur d'une chaîne ANSWER=peut-être
if [ -z "$REPONSE" ]; alors
echo "Il n'y a pas de réponse." >&2 sortie 1
fi
if [ "$REPONSE" = "oui" ]; puis echo "La réponse est OUI."
elif [ "$REPONSE" = "non" ]; puis echo "La réponse est NON."
elif [ "$REPONSE" = "peut-être" ]; then echo "La réponse est PEUT-ÊTRE."
d'autre
echo "La réponse est INCONNUE."
fi
Dans ce script, nous évaluons la constante RÉPONDRE. Nous déterminons d'abord si la chaîne est vide. Si c'est le cas, nous terminons le script et définissons le statut de sortie sur un. Notez la redirection appliquée à la commande echo. Cela redirige le message d'erreur « Il n'y a pas de réponse. » à l'erreur standard, ce qui est la bonne chose à faire avec les messages d'erreur. Si la chaîne n'est pas vide, nous évaluons la valeur de la chaîne pour voir si elle est égale à « oui », « non » ou « peut-être ». Nous le faisons en utilisant Elif, qui est l'abréviation de " else if ". En utilisant Elif, nous sommes capables de construire un test logique plus complexe.