string=123456
if [ $string == 123456 ]; then
echo 123
fi
Cela fonctionne bien, mais si je change == en = ~ j'obtiens cette erreur:
./test: line 3: [: =~: binary operator expected
123456
est une RE valide
string=123456
if [ $string == 123456 ]; then
echo 123
fi
Cela fonctionne bien, mais si je change == en = ~ j'obtiens cette erreur:
./test: line 3: [: =~: binary operator expected
123456
est une RE valide
Réponses:
Lacorrespondance des expressions rationnelles de Bash fonctionne uniquement entre crochets doubles[[ ... ]]
:
string=123456
if [[ "$string" =~ 123456 ]]; then echo 123; fi
123
[[ ... ]]
, car aucun fractionnement de mot ou expansion de chemin ne s'y produit. Ils ne sont nécessaires que lors de l'utilisation de crochets simples [ ... ]
(des deux côtés) et à droite de l'expression de double crochet.
=~
ce cas, l' utilisation de est incorrecte.=~
compare le bagout (côté gauche de la tâche) avec une expression régulièreregex
sur le côté droit de l'assinment. Une expression régulière dans sa forme la plus simple est passée comme'[0-9][0-9]'