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 :

Elément d'un tableau peut-il être reférencé?


Sujet :

Linux

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Elément d'un tableau peut-il être reférencé?
    je m'explique en perl je sais que on peux réferencé à peu pres n'importe quoi mais parcontre en bash je ne suis pas sure, voici un exemple que je ne sais pas comment arriver à retrouver ma valeur de depart.

    element1=pomme
    element2=orange
    element3=framboise

    arrayFruit=( element1 element2 element3 )

    a se que je peux comprendre pour l'instant il n'y a aucune relation entre mes variables et les elements du tableau mais je crois qu'il aurais surment une manière a se que j'appelle les variables à partir du tableau mais comment? je n'ai pas encore trouvé.
    merci de votre aide!

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    arrayFruit=( '$element1' '$element2' '$element3' )

    # eval echo ${arrayFruit[2]}
    framboise

  3. #3
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 862
    Points : 4 835
    Points
    4 835
    Par défaut
    A noter qu'il existe un forum Perl pour des questions telle que celle-ci : http://www.developpez.net/forums/viewforum.php?f=83

    @++

  4. #4
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    oui mais moi je veux sa en bash pas en perl

  5. #5
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Et si tu commencais par chercher dans notre bible ksh (compatible bash):
    http://marcg.develeppez.com/ksh

  6. #6
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    bon sa na pas résolue mon problème alors je vais mettre mon code. mais premierement je vais expliqué un peu se que je veux faire jai un fichier restore.conf avec des path que jai indiqué voici:
    ######## FICHIER restore.conf #################
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    configFile=httpd.conf
     
    CGIBIN_RES=/data/WEB/cgi-bin
    HTDOCS_RES=/data/WEB/htdocs
    CONF_RES=/data/WEB/conf
    LOG_RES=
    ##############################################

    et voici mon script restore.sh qui doit prendre les path dans restore.conf et ensuite verifier dans le dossier config si il y a des répertoires a restauré et si c'est le cas plus tard quand jaurais fini le script le fera mais la je bloque a une condition que je vais vous montré voici le code:

    ############### Fichier restore.sh #################

    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
    32
    #! /bin/bash -x
     
    text_restore="restore of"
    ServerRoot=/usr/local/apache2
    httpdConf=`cat restore.conf |grep -v '^#' | grep 'configFile=' | sed -e s/configFile=//`
    HTDOCS_RES=`cat restore.conf |grep -v '^#' | grep 'HTDOCS_RES=' | sed -e s/HTDOCS_RES=//`
    CGIBIN_RES=`cat restore.conf |grep -v '^#' | grep 'CGIBIN_RES=' | sed -e s/CGIBIN_RES=//`
    CONF_RES=`cat restore.conf |grep -v '^#' | grep 'CONF_RES=' | sed -e s/CONF_RES=//`
    LOG_RES=`cat restore.conf |grep -v '^#' | grep 'LOG_RES=' | sed -e s/LOG_RES=//`
    tab=( '$HTDOCS_RES' '$CGIBIN_RES' '$CONF_RES' '$LOG_RES' )
    #tab=( HTDOCS_RES CGIBIN_RES CONF_RES LOG_RES )
     
    cd config
     
    #Liste les fichiers et Rep de config
    liste=`ls ./`
    for elt in $liste; do
             arrayZ[$cpt]="$elt"
             cpt=`expr $cpt + 1`
    done
    httpdConfig=`find ./ -name $httpdConf`
     
    totalElt=`echo ${#arrayZ[@]}`
    for (( i=0; i < $totalElt; i++ )); do
        for (( j=0; j < $totalElt; j++ )); do
          if [ ${arrayZ[$i]} == ${tab[$j]} ]; then # voici la condition qui ne peu etre vraix
             #`cp -Rf ${arrayZ[$i]} ${$path}`
             echo "${tab[$j]} first"
             echo "${arrayZ[$i]} second"
          fi
       done
    done
    cette condition ne peu etre vraix si je mets dans le array tab juste le nom de la variable sans y mettre le signe $ et les simple quote, mais si je fais sa par après je ne sais pas comment faire en sorte de transformé la valeur de l'élément du tableaux pour y obtenir la valeur de la variable. Ce qui me bloque toute aide serais apprécié merci

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    ${mon_array[$indice]} avec des {} et pas des ()
    ..
    ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    httpdConf=`cat restore.conf |grep -v '^#' | grep 'configFile=' | sed -e s/configFile=//`
    un peut lourd non ?
    alors que une petit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    . /lechemin_qui_va_bien/restore.conf
    initialiserai les variables decrite directement ....... et dans le script tu utilise
    $CGIBIN_RES, etc .....

  8. #8
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    bon je ne sais pas ou tu as vue que jai mi des () pour des array mais si tu regarde bien jai bel et bien mis des ACCOLADE {} je vais essayé quand meme se que tu me dit concernant la lourdesse... merci si sa ne répond pas a ma question je vais verifier votre bible de bash le ksh meme si que avant meme d'avoir postulé jai lu beaucoup mais la solution est quelque part quand meme sa c'est sur et certain

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [[ ${arrayZ[$i]} == ${tab[$j]} ]]
    peut être ?

    une des variables se serait elle pas vide ?

    edite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab=( '$HTDOCS_RES' '$CGIBIN_RES' '$CONF_RES' '$LOG_RES' )
    le simple cote empeche le shell de resoudre le $ donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab=( "$HTDOCS_RES" "$CGIBIN_RES" "$CONF_RES" "$LOG_RES" )

  10. #10
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    bon jai oublié de mentionné ceci ${arrayZ[$i]} contient des dossiers qui on le meme nom que les elements qui sont dans le le array tab, jai fais sa juste pour qu'il verifie si il existe ou pas car il se peux qu'il n'existe pas, mais parcontre si il existe a se moment la je vais devoir apres la verification d'existence if [ ${arrayZ[$i]} == ${tab[$j]} ]; then pouvoir avoir la valeur de ${tab[$j]} qui devrais me donné le chemin ou il va copiez les donnés se que je ferais lorsque je vais trouvé une astuce a pouvoir sortir l'information qui se trouve dans la variable qui se trouve dans l'élément ${tab[$j]} c'est pour sa que je ne veux pas mettre le signe $ dans les éléments qui se trouve dans le tableau tab;
    alors dans le dossier config il y a exemple 3 dossier appellez HTDOCS_RES CGIBIN_RES CONF_RES j'espere que je suis plus clair merci

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/09/2012, 08h50
  2. Réponses: 3
    Dernier message: 28/03/2011, 13h04
  3. Réponses: 1
    Dernier message: 07/02/2010, 11h08
  4. [QR] À quoi Sepi peut-il m'être utile ?
    Par Just-Soft dans le forum Sepi
    Réponses: 3
    Dernier message: 17/11/2008, 13h27

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