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 :

Comparer une chaine de caractere à une autre


Sujet :

Linux

  1. #1
    Membre éclairé
    Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut Comparer une chaine de caractere à une autre
    Bonjour,
    j'ai un souci lorsque je récupere un champ d'un texte csv et que je le compare.
    Chaque fois , ça va dans le else..
    Alors que quand j'affiche la category elle affiche soit Childrens soit Horror ...
    Je ne comprends vraiment pas.
    merci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
      cat appendix1  |   while read file
      do
     
     
     
        category='$(echo $file | cut -d"," -f4)'
        isbn='$(echo $file | cut -d"," -f1)'
        author='$(echo $file | cut -d"," -f3)'
        title='$(echo $file | cut -d"," -f2)'
     
     
      #  eval echo $category
     
       if [ "$category" = "Horror" ];
       then
     
           echo -n "ISBN:" >> $HOME/tutorial/horror_books
           eval echo $isbn   >> $HOME/tutorial/horror_books
           echo -n "Author:" >> $HOME/tutorial/horror_books
           eval echo $author >> $HOME/tutorial/horror_books
           echo -n "Title:" >> $HOME/tutorial/horror_books
           eval echo $title >> $HOME/tutorial/horror_books
     
     
     
     
      elif [ "$category" = "Childrens" ];
       then
     
     
    ... else ...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    tu peux nous mettre quelques lignes de ton fichier ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre éclairé
    Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    888-99494994,Five Get into Troue),Enid Blyton,Childrens,6,3
    978-03340681431,The Little March Girl,Christian Anderson,Horror,16,1
    978-02340623145,How I made Microsoft,Bill Gates,Computing,20,30
    978-0940211153,How did I win Roland Garros 2009 by cheating,Roger Federer,Sports,1,15
    978-0140681114,How I do aces on the court,Rafael Nadal,Sports,2,99
    Je suis en train de faire un case pour voir.

  4. #4
    Membre éclairé
    Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut
    Même chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        eval echo $category
     
       case $category in
          Horror)
                 destination="$HOME/tutorial/horror_books"
                 newBook $isbn $author $title $destination
     
          ;;
     
          *)
                echo 'ici'
          ;;
        esac
    Ma sortie d'écran : J'ai mis en gras ce qui ne va pas.
    Il ecrit Horror et dans le case il ne vas pas dans le Horror statement .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Childrens
    ici
    1
    Horror
    ici
    2
    Computing
    ici
    3
    Sports
    ici
    4
    Sports
    ici
    5
    
    ici
    6
    Summary
    the date is Wed Dec 9 20:48:05 GMT 2009
    Number of Books Processed:0
    0

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    C'est les apostrophes (single-quotes), elle n'assurent pas la substitution des variables.
    Remplace les par des guillemets (").
    Par contre, utilise des apostrophes pour le délimiteur du cut.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Par défaut
    hi,

    je pense que ça vient des simples quotes utilisé dans tes variables pour matcher la catégorie, l'auteur, etc... Les simples quotes "enferme" le contenu de la variable et sh la considère comme une string... j'ai testé rapidement ça marche sans ! enfin j'espère...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    mrpropre@vm:/tmp$ cat test.sh 
    #!/bin/sh
     
    cat appendix1 | while read file
        do
    	category=$(echo $file | cut -d"," -f4)
        	isbn=$(echo $file | cut -d"," -f1)
        	author=$(echo $file | cut -d"," -f3)
        	title=$(echo $file | cut -d"," -f2)
     
       	if [ "$category" = "Horror" ]; then
        	    echo "writing horror..."
    	    echo -n "ISBN:" >> /tmp/horror_books
                eval echo $isbn   >> /tmp/horror_books
                echo -n "Author:" >> /tmp/horror_books
                eval echo $author >> /tmp/horror_books
                echo -n "Title:" >> /tmp/horror_books
                eval echo $title >> /tmp/horror_books	
    	else
                echo "follows..."
    	fi 
        done
     
    mrpropre@vm:/tmp$cat horror_books 
    ISBN:978-03340681431
    Author:Christian Anderson
    Title:The Little March Girl
    Le résultat est bien celui attendu ??

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/05/2010, 20h08
  2. [Batch] Créer une chaine à partir d'une variable et d'une autre chaine
    Par mlle lain dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 10/11/2009, 16h26
  3. Réponses: 9
    Dernier message: 09/12/2008, 19h19
  4. Réponses: 29
    Dernier message: 06/03/2008, 22h33
  5. Extraire une valeur entiere d'une chaine de caractere
    Par Aloneghost dans le forum Débuter
    Réponses: 2
    Dernier message: 25/04/2006, 12h23

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