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 :

Comparaison de chaines


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 34
    Points : 34
    Points
    34
    Par défaut Comparaison de chaines
    Glop,

    je suis un total débutant en ce qui concerne l'écriture de script Bash. Dans un script, j'ai besoin de comparer une chaine à une autre. = me direz-vous. Oui...mais non. J'ai plutôt besoin de savoir si ma chaine contient un mot.
    Comment puis-je faire ceci? Le principe est de récupérer le message suite à l'exécution d'une commande (service mysql restart dans mon cas) et, en fonction de ce qui est retourné de faire telle ou telle action.

  2. #2
    Membre émérite

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Points : 2 844
    Points
    2 844
    Par défaut
    Salut
    Peut être peux tu utiliser grep pour trouver la chaîne que tu recherches et coupler cela à awk (par l'intermédiaire d'un |) pour l'afficher.
    C bien cela que tu veux?Trouver une chaîne avec un mot et l'afficher?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    Ce que je veux c'est tout simplement ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    service httpd stop >> $filename 2>/dev/null
    retour=$? || $retour
    if [ $retour contient la chaine suivante  done ]; then
       Je fais ma tambouille car le service est arrêté comme je le demande
       else
        Je fais une tambouille différente car le service n'est pas arrêté
    fi
    C'est compréhensible?

    (edit : les code BBCode dans des balises [code], ça marche pas...)

  4. #4
    Membre émérite

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Points : 2 844
    Points
    2 844
    Par défaut
    Il faut je pense que tu utilises une structure de comparaison:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [$retour eq la chaîne suivante done];
    Tu vois ce que je veux dire?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    Moui... je peux mettre quelque-chose comme "*ok*" après eq?
    Je peux mettre en regexp par exemple?

  6. #6
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    expr convient bien pour faire ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ `expr "$param" : "pattern"` -gt 0 ] ; then
    Sinon, les switch sauce bash savent faire également.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    case $param in
        mot1|mot2) echo "mot1 ou mot 2"
            continue;; # ou exit 0;;
        --s=*) # commece par "--s="
            ...
    esac
    Et il n'est pas impossible qu'il y ait une autre façon simple, mais je l'ai oubliée.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    Ok.
    Merci pour votre aide.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 22/03/2006, 21h57
  2. [VBA]excel comparaison de chaine de caractere
    Par ogenki dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/01/2006, 15h32
  3. [langage] Comparaison de chaîne
    Par Fastshadow dans le forum Langage
    Réponses: 7
    Dernier message: 05/09/2004, 18h58
  4. comparaison de chaines de caracteres en PLSQL
    Par biozaxx dans le forum PL/SQL
    Réponses: 3
    Dernier message: 19/08/2004, 09h41
  5. [LG]comparaison de chaines de caracteres
    Par thesam dans le forum Langage
    Réponses: 6
    Dernier message: 20/05/2003, 22h41

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