Comment utiliser les expressions régulières dans les scripts bash?

Je veux vérifier si une variable a une année valide en utilisant une expression régulière. En lisant le manuel de bash, je comprends que je pourrais utiliser l’opérateur = ~

En regardant l’exemple ci-dessous, je m’attendrais à voir “not OK” mais je vois “OK”. Qu’est-ce que je fais mal?

i="test" if [ $i=~"200[78]" ] then echo "OK" else echo "not OK" fi 

Il a été changé entre 3.1 et 3.2:

Ceci est une description concise des nouvelles fonctionnalités ajoutées à bash-3.2 depuis la sortie de bash-3.1.

En citant l’argument de chaîne dans l’opérateur [[commande’s = ~], la correspondance de chaîne est désormais requirejse, comme avec les autres opérateurs de correspondance de modèle.

Alors utilisez-le sans les guillemets donc:

 i="test" if [[ $i =~ 200[78] ]] ; then echo "OK" else echo "not OK" fi