# Script bash expression régulière

**URL:** <https://www.debian-fr.org/t/script-bash-expression-reguliere/55652>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 1:43 UTC](https://www.debian-fr.org/t/script-bash-expression-reguliere/55652 "2016-02-21T13:43:37Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jimmsr](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/4bbf92/32.png) [@Jimmsr](https://www.debian-fr.org/u/Jimmsr)\
**Post date:** [Février 21, 2016, 1:43 UTC](https://www.debian-fr.org/t/script-bash-expression-reguliere/55652/1 "2016-02-21T13:43:37Z")

</div>

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 :

```auto
#!/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.

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 1:43 UTC](https://www.debian-fr.org/t/script-bash-expression-reguliere/55652/2 "2016-02-21T13:43:39Z")

</div>

Enlève les quotes autour de ta regex :

```auto

```

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. 😉

---

<div class="post-metadata">

**Author:** ![Jimmsr](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/4bbf92/32.png) [@Jimmsr](https://www.debian-fr.org/u/Jimmsr)\
**Post date:** [Février 21, 2016, 1:43 UTC](https://www.debian-fr.org/t/script-bash-expression-reguliere/55652/3 "2016-02-21T13:43:40Z")

</div>

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 :

```auto
if [[$maVar =~ ^p[0-9][0-9]*$ ]]
```

Merci en tout cas pour l’aide.

---

<div class="post-metadata">

**Author:** ![Hark](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/h/a5b964/32.png) [@Hark](https://www.debian-fr.org/u/Hark)\
**Post date:** [Mars 23, 2017, 9:29 UTC](https://www.debian-fr.org/t/script-bash-expression-reguliere/55652/4 "2017-03-23T09:29:53Z")

</div>

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'
```

---

<div class="post-metadata">

**Author:** ![gregoryroche0](https://www.debian-fr.org/user_avatar/www.debian-fr.org/gregoryroche0/32/13099_2.png) [@gregoryroche0](https://www.debian-fr.org/u/gregoryroche0)\
**Post date:** [Avril 24, 2017, 5:38 UTC](https://www.debian-fr.org/t/script-bash-expression-reguliere/55652/5 "2017-04-24T05:38:57Z")

</div>

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

> [@Jimmsr](#):
>
> [0-9][0-9]\*

Bonne recherche. 😉
