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

Shell et commandes GNU Discussion :

Problème avec chaine de caractère


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 81
    Points
    81
    Par défaut Problème avec chaine de caractère
    J'essaie maintenant d'affecter sequentiellement une chaine de caractère à une variable mais il m'affiche bizarrement des erreurs "no such file or directory" alors que je lui demande juste de faire un echo sur la variable SOURCEFOLDER , voici mon code:

    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
     
    for x in $(seq  1 6); 
    do 
    SOURCEFOLDER=''"
    #Répertoire contenant les log zippés
    if [ $x -eq 1 ]
    then 
    $SOURCEFOLDER="/public/accesslogs-02-032010/"
    elif [ $x -eq 2 ]
    then 
    $SOURCEFOLDER="/public/accesslogs-20101019/"
    elif [ $x -eq 3 ]
    then 
    $SOURCEFOLDER="/public/accesslogs-m3/wap1-vscm/"
    elif [ $x -eq 4 ]
    then 
    $SOURCEFOLDER="/public/accesslogs-m3/wap2-vscm/"
    elif [ $x -eq 5 ]
    then 
    $SOURCEFOLDER="/public/accesslogs-m3/wap3-vscm/"
    elif [ $x -eq 6 ]
    then 
    $SOURCEFOLDER="/public/accesslogs-m3/wap4-vscm/"
    fi
    echo $SOURCEFOLDER
     
    done
    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Salut.

    À première vue, tu fais des affectations avec des $ :

    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
    if [ $x -eq 1 ]
    then 
        SOURCEFOLDER="/public/accesslogs-02-032010/"
    elif [ $x -eq 2 ]
    then 
        SOURCEFOLDER="/public/accesslogs-20101019/"
    elif [ $x -eq 3 ]
    then 
        SOURCEFOLDER="/public/accesslogs-m3/wap1-vscm/"
    elif [ $x -eq 4 ]
    then 
        SOURCEFOLDER="/public/accesslogs-m3/wap2-vscm/"
    elif [ $x -eq 5 ]
    then 
        SOURCEFOLDER="/public/accesslogs-m3/wap3-vscm/"
    elif [ $x -eq 6 ]
    then 
        SOURCEFOLDER="/public/accesslogs-m3/wap4-vscm/"
    fi
    Je ne vois pas l'utilité de cette première affectation :
    Cordialement,
    Idriss

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 81
    Points
    81
    Par défaut
    Merci pour ton aide !!

  4. #4
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    Autrement plutot que des if /elseif

    tu peux utiliser un tableau dans ce cas.
    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
    #!/bin/bash
     
    SOURCES=(
        ""
        "/public/accesslogs-02-032010/"
        "/public/accesslogs-20101019/"
        "/public/accesslogs-m3/wap1-vscm/"
        "/public/accesslogs-m3/wap2-vscm/"
        "/public/accesslogs-m3/wap3-vscm/"
        "/public/accesslogs-m3/wap4-vscm/"
    )
     
    for x in $(seq  1 6); 
    do 
        SOURCEFOLDER=${SOURCES[x]}
        echo "Folder($x): "$SOURCEFOLDER 
    done
     
    #ou
    for SOURCEFOLDER in ${SOURCES[@]} 
    do
        echo "Folder: "$SOURCEFOLDER 
    done

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 585
    Points : 19 462
    Points
    19 462
    Par défaut
    houla! quand tu as une telle ribambelle de if...
    mieux vaut un case..esac :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/bash
     
    for ((x=1; x<=6; x++))
    do case $x in
          1) SOURCEFOLDER="/public/accesslogs-02-032010/" ;;
          2) SOURCEFOLDER="/public/accesslogs-20101019/" ;;
          3) SOURCEFOLDER="/public/accesslogs-m3/wap1-vscm/" ;;
          4) SOURCEFOLDER="/public/accesslogs-m3/wap2-vscm/" ;;
          5) SOURCEFOLDER="/public/accesslogs-m3/wap3-vscm/" ;;
          6) SOURCEFOLDER="/public/accesslogs-m3/wap4-vscm/" ;;
       esac
       echo $SOURCEFOLDER
    done
    on pourrait simplifier encore en utilisant un tableau :
    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
    #!/bin/bash
    SourceFolders=( "/public/accesslogs-02-032010/" 
                    "/public/accesslogs-20101019/" 
                    "/public/accesslogs-m3/wap1-vscm/"
                    "/public/accesslogs-m3/wap2-vscm/" 
                    "/public/accesslogs-m3/wap3-vscm/" 
                    "/public/accesslogs-m3/wap4-vscm/"  
                  )
    for ((x=0; x<${#SourceFolders[@]}; x++))
    do echo "${SourceFolders[x]}"
    done
    #voire :
    for folder in "${SourceFolders[@]}"
    do echo "$folder"
    done
    #ou tout simplement :
    printf '%s\n' "${SourceFolders[@]}"
    non, mais

    edit: grillé

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 81
    Points
    81
    Par défaut
    Tout à fait d'accord ! Merci pour vos réponses

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

Discussions similaires

  1. Problème de chaine de caractère avec "wscript.Run"
    Par vonemya dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 11/07/2008, 14h31
  2. Problème avec chaine de caractère
    Par Mouss340 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/12/2007, 20h46
  3. Problème avec chaine de caractères
    Par Nicegame dans le forum C
    Réponses: 7
    Dernier message: 27/04/2007, 18h35
  4. [FLASH 8] Problème de chaine de caractère
    Par dom_dev dans le forum Flash
    Réponses: 7
    Dernier message: 02/03/2006, 17h42
  5. Requete avec chaine de caractère commence par
    Par jazzes_dean dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/08/2004, 13h07

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