Quelle est la différence entre =
et ==
pour comparer les chaînes dans la programmation Linux Shell?
Peut-être que le code suivant fonctionne:
if [ "$NAME" = "user" ]
then
echo "your name is user"
fi
Mais je pense que ce n'est pas une syntaxe correcte. Il serait utilisé pour comparer la chaîne par ==
déclaration.
Qu'est-ce qui est correct?
Ces pages expliquent les différents opérateurs de comparaison dans bash:
Sur la deuxième page liée, vous trouverez:
==
is equal to
if [ "$a" == "$b" ]
This is a synonym for =.
L'égale unique est correcte
string1 == string2
chaîne1 = chaîne2
Vrai si les chaînes sont égales. ‘=’ Doit être utilisé avec la commande de test de conformité POSIX
NAME="rafael"
USER="rafael"
if [ "$NAME" = "$USER" ]; then
echo "Hello"
fi
En général, l'opérateur = fonctionne de la même manière que == lors de la comparaison de chaînes.
Remarque: L'opérateur de comparaison == se comporte différemment dans un test entre crochets et entre crochets simples.
[[ $a == z* ]] # True if $a starts with an "z" (pattern matching).
[[ $a == "z*" ]] # True if $a is equal to z* (literal matching).
[ $a == z* ] # File globbing and Word splitting take place.
[ "$a" == "z*" ] # True if $a is equal to z* (literal matching).