Script bash expression régulière

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.

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. :wink:

Oui effectivement, je venais justement de trouver (comme quoi chercher un peu, ça ne fait pas de mal :wink:), 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.

Je cherchais une info et je suis tombé ici.
Alors bon… un peu déterré, mais si ça peut aider qqun :wink:

[[ "$maVar" =~ ^p[0-9]+$ ]] && echo 'OK' || echo 'NOK'

Tu peux simplifier l’expression régulière suivante :

Bonne recherche. :wink: