IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Regex en bash pour vérifier une extension


Sujet :

Linux

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Regex en bash pour vérifier une extension
    Bonjour.

    Je suis en pleine écriture d'un script en bash. Je doit notamment vérifier que le premier argument est bien une extension, et je fais donc le test suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [[ "$1"==[\.]+[\.a-zA-Z0-9]* ]]
    Mais bien sûr, ça ne marche pas (sinon je serais pas ici ) et je me rend bien compte que l'écriture est fausse, mais n'ayant jamais utilisé de regex en bash avant (et encore moins dans un if) je ne connais pas du tout la syntaxe à utiliser. Et donc quelqu'un pourrait-il m'aider à rédiger quelque chose de correct?

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    Bonjour,

    pourquoi une regex ? une classe de caractère fait l'affaire, non ?
    en bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var='.1b3'
    [[ $var == .[[:alnum:]][[:alnum:]][[:alnum:]] ]] && echo ok || echo KO
    ok
    # avec extglob
    shopt -s extglob
    var='.abc123'
    [[ $var == .+([[:alnum:]]) ]] && echo ok || echo KO
    ok
    note que les espaces sont obligatoires !

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Oui, ça marche aussi, mais je ne connaissais pas les classes de caractères jusqu'à maintenant Et j'ai fini par trouver ma regex (presque) idéale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $1 =~ ^\.[\.a-zA-Z0-9]+$
    Ca permet d'inclure des extensions comme .tar.gz par exemple

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 596
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var='.tar.gz'
    [[ $var == +(.+([[:alnum:]])) ]] && echo ok || echo KO
    ok

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Je n'ai qu'une chose à dire : C'est adopté

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Html, Cgi et Bash pour construire une interface d'admin
    Par isildur37 dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 24/12/2008, 15h52
  2. Réponses: 8
    Dernier message: 24/04/2008, 02h00
  3. Réponses: 4
    Dernier message: 29/10/2007, 10h35
  4. Réponses: 1
    Dernier message: 26/11/2006, 01h46
  5. la fonction pour connaitre une extension de fichier ?
    Par Zen_Fou dans le forum Langage
    Réponses: 6
    Dernier message: 11/05/2006, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo