web-dev-qa-db-fra.com

Signification de l'opérateur "= ~" dans le script Shell

Je suis tombé sur un script Shell où le code est

for line in $LIST_ARRAY;do
if [[ $LIST_ARRAY =~ $line ]]
then
echo "true"
....
...
.

À quoi sert =~ dans ce cas?

44
cc4re

c'est l'opérateur Equal Tilde qui permet d'utiliser l'expression régulière dans une instruction if.

Un opérateur binaire supplémentaire, = ~, est disponible, avec la même priorité que == et! =. Lorsqu'il est utilisé, la chaîne à droite de l'opérateur est considérée comme une expression régulière étendue et correspond en conséquence (comme dans regex (3)). La valeur de retour est 0 si la chaîne correspond au modèle et 1 sinon. Si l'expression régulière est syntaxiquement incorrecte, la valeur de retour de l'expression conditionnelle est 2. Si l'option Shell nocasematch est activée, la correspondance est effectuée sans tenir compte de la casse des caractères alphabétiques. N'importe quelle partie du modèle peut être citée pour le forcer à correspondre en tant que chaîne.

http://linux.die.net/man/1/bash

54
MimiEAM