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 :

[BASH] modèle pour CASE


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 14
    Points : 16
    Points
    16
    Par défaut [BASH] modèle pour CASE
    Bonjour,

    J'ai le script suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    case "${i}" in
    <div style="margin-left:40px">+([ [:word:] | \- ]) )</div><div style="margin-left:40px"><div style="margin-left:40px">echo "OK"</div></div><div style="margin-left:40px"><div style="margin-left:40px">;;</div></div><div style="margin-left:40px">* )</div><div style="margin-left:40px"><div style="margin-left:40px">echo "Raté"</div></div><div style="margin-left:40px"><div style="margin-left:40px">;;</div></div>esac
    Je n'arrive pas à avoir le complément (la sélection inverse) de cette expression : +([ [:word:] | \- ])

    Une âme charitable pour un administrateur amateur ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Et comme ceci?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    +([^ [:word:] | \- ]) )

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    C'est ça !

    Ma syntaxe initiale n'est pas bonne, ce qui donne in fine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    case "${i}" in
        +([[:word:]]|[-]) )
            echo "OK"
            ;;
        +([^[:word:]]|[^-]) )
            echo "KO"
            ;;
        * )
            echo "Inconnu"
            ;;
    esac
    Tout ça pour tester si une variable ${i} ne contient que des caractères alphanumériques ou les signes "_" et "-".

    Pour t tt 1 11 t1 1t - t1- t-1 -t1, c'est "OK".
    Pour ? ?? t? ?t 1? ?1 t1? t?1 ?t1 -? ?- t1-? t1?- t-1? ?t1-, c'est "KO".
    Aucun cas "Inconnu", ouf !

    Merci !

  4. #4
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 259
    Points : 2 420
    Points
    2 420
    Par défaut
    Bonjour à tous.

    Par curiosité j'ai essayé ça dans une console & le programme m'insulte :
    Erreur de syntaxe près du symbole inattendu « ( »
    !

    Pourtant, je ne l'ai pas frappé, avant ! (re : )

    Je précise que j'utilise Bash.

    Donc, s'il y a une explication logique & cohérente à ça...
    D'avance, je vous en remercie.

  5. #5
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Points : 102
    Points
    102
    Par défaut
    Je ne sais pas si tu as toujours besoin mais tu as besoin d'activer les expressions régulières étendues.

    Pour la syntaxe des patterns, tu peux faire un man bash et chercher Pathname Expansion

    cortex

  6. #6
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Sauf erreur de ma part , "+([[:word:]-])" revient au même en plus simple que "+([[:word:]]|[-])" et on peut utiliser !()

    ce qui donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    case "$i" in
        +([[:word:]-]) )
            echo "OK"
            ;;
        !([[:word:]-]) )
            echo "KO"
            ;;
        * )
            echo "Inconnu"
            ;;
    esac
    "[:word:]" = "[:alnum:]" avec en plus "_"

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

Discussions similaires

  1. [OpenOffice][Base de données] Modèles pour base
    Par Zetophe dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 02/05/2007, 16h15
  2. Réponses: 6
    Dernier message: 01/03/2007, 09h43
  3. Format de modéle pour un Rubiks Cube.
    Par granquet dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 07/11/2006, 22h40
  4. Réponses: 5
    Dernier message: 08/09/2006, 12h23
  5. [DOM4J] Modèle pour JTree
    Par osopardo dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 21/04/2006, 17h08

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