Jimmsr
Février 21, 2016, 1:43
1
Bonjour,
Je viens de commencer un script bash, malheureusement je suis vite bloqué. Je n’arrive pas à comparer une variable avec une expression régulière :
#!/bin/bash
read maVar
if [[ "$maVar" =~ "^p[:digit:]*" ]]
then
echo "ok"
else
echo "pas ok"
fi
exit 0
J’aimerai que ma variable maVar soit composée du caractère “p” puis d’une suite de chiffre.
Mais cela ne marche pas. J’ai toujours le message “pas ok” qui s’affiche quand je rentre les valeurs “p1” ou “p65646”.
Une idée ?
Merci d’avance.
syam
Février 21, 2016, 1:43
2
Enlève les quotes autour de ta regex :
Un peu HS : attention ta regex ne semble pas correspondre exactement à ton énoncé « composée du caractère “p” puis d’une suite de chiffre ». Soit c’est la regex qui est fausse, soit c’est l’énoncé, ou les deux.
Je te laisse chercher un peu sinon c’est pas drôle.
Jimmsr
Février 21, 2016, 1:43
3
Oui effectivement, je venais justement de trouver (comme quoi chercher un peu, ça ne fait pas de mal ), j’allais justement poster ma réponse.
Du coup ça marche avec ce code :
if [[ $maVar =~ ^p[0-9][0-9]*$ ]]
Merci en tout cas pour l’aide.
Hark
Mars 23, 2017, 9:29
4
Je cherchais une info et je suis tombé ici.
Alors bon… un peu déterré, mais si ça peut aider qqun
[[ "$maVar" =~ ^p[0-9]+$ ]] && echo 'OK' || echo 'NOK'
Tu peux simplifier l’expression régulière suivante :
Jimmsr:
[0-9][0-9]*
Bonne recherche.