Bash et REGEXP

Résolu
Bonjour tout le monde !!!

je suis entrain d'écrire une ptit script dans lequel j'aimerais tester la syntax d'un paramètre.

if [[ $1 =~ /dev/[a-]{3} ]]

en fait je voudrais tester si le param 1 a pour valeur /dev/hda mais je voudrais que le test soit vrai uniquement sil y a 3 alpha.
le problème est que si plus de 3 alpha, le test est quand meme bon donc problème, on sait tous q'un part se nomme de cette manière /dev/hdX ou /dev/sdX

voila jespère etre comprehenssible...

Merci d'avance :)

4 réponses

  1. salut,

    le $ marque la fin d'une ligne, i.e. la fin d'une regex.
    par exemple
    for i in /dev/*; do [[ $i =~ /dev/[a-z]{3}$ ]] && echo "$i"; done
    /dev/bsg
    /dev/bus
    /dev/dri
    /dev/log
    /dev/mem
    /dev/net
    /dev/ppp
    /dev/pts
    /dev/rtc
    /dev/sda
    /dev/shm
    /dev/snd
    /dev/tty
    /dev/vcs
    1. Je n'ai rien compris, mais tu peux filtrer ton param avant avec la fonction "cut"
      1. Contributeur
        Salut,

        en fait je voudrais tester si le param 1 a pour valeur /dev/hda mais je voudrais que le test soit vrai uniquement sil y a 3 alpha.
        Euh... ce n'est pas clair tout ça ;-(
        1. j'était parti pour la refaire mais merci, j'avais pensé au cut mais pas a la fin de ligne.

          Merci a tous pour la réactivité et qqchquicommenceparQ pour la réponse.

          Bonne aprem,

          PS/ je suis en train d'apprendre les expression régulière, c'est pas gagné xD