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 :

Script Bash - Tableau de tableau


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur d'études Télécoms
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur d'études Télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Par défaut Script Bash - Tableau de tableau
    Bonjour,

    Je travaille sur un script bash ou il est question de deux types tableaux:
    - 1 premier type qui fait référence à des valeurs c'est à dire RENNES et PARIS dans mon cas (voir code source)
    - 1 autre type qui fait référence au premier type de tableau et qui fait référence aux tableaux RENNES1 et PARIS1.

    Ce que je veux, c'est de pouvoir récupérer des informations du tableau RENNES1 en utilisant que le tableau ListeBSC; par exemple connaitre la taille de la variable RENNES1 à partir de ListeBSC ou vouloir récupérer la première valeur de RENNES1 en faisant comme dans un langage comme le java une sorte de:



    Concrètement c'est de vouloir utiliser les valeurs de ListeBSC comme des références à des variables qui contiennent d'autres types de valeurs.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RENNES1 = (2.4.5.1.11 2.5.5.1.12)
    PARIS1      = (2.5.5.1.12 2.6.5.1.13 2.5.5.1.16)
     
    ListeBSC = (RENNES1 PARIS1)


    Je vous remercie d'avance

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut
    Bonjour,

    avec BASH4, qui dispose de tableaux associatifs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/bash
     
    arA=( a1 a2 a3 )
    arB=( b1 b2 b3 )
    declare -A list
     
    for ar in arA[@] arB[@]
    do n=0
       for i in "${!ar}"
       do list[${ar//@/$((n++))}]="$i"
       done
    done
     
    echo "${list[arA[1]]}"

    ???
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je poste ma solution ici aussi, au cas où.
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        #!/bin/bash                                                                     
        RENNES1=(2 4 5 1 11 2 5 5 1 12)
        PARIS1=(2 5 5 1 12 2 6 5 1 13 2 5 5 1 16)
     
        # On place les deux tableau dans un troisième tableau
        ListeBSC[0]=${RENNES1[*]}
        ListeBSC[1]=${PARIS1[*]}
     
        # afficher le 2ieme éléments de RENNES1                                         
        # On récupère d abord le tableau duquel on souhaite un élément.
        effective=(${ListeBSC[0]})
     
        # Enfin On effiche l élément désiré.
        echo ${effective[1]}

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut
    Bonjour,

    ta solution ne fonctionnera pas si le deuxième élément de RENNES1 est lui-même composé de plusieurs éléments ( RENNES1=( 01 '0 2' 03 ) par exemple)
    ça n'affichera alors que 0
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    avec BASH4, qui dispose de tableaux associatifs....
    Bonjour

    Moi j'aime bien quand N_BaH vient poster sa solution de riche propriétaire sans penser aux pauvres moldus qui doivent programmer sur de vieilles bouzines qui ne savent même pas qu'il y a eu un "again".

    Et donc j'aime bien venir lui faire la nique en proposant ma solution pure style Bourne Shell comme seules savent le faire les grandes et vieilles noblesses attachées à nos origines.

    Et en plus suis certain que parfois il attend avec impatience de voir si je peux m'en sortir...

    Code sh : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/sh
    get()
    {
    	ind=$1; shift
    	echo $* |cut -d' ' -f$ind
    }
     
    RENNES1="2 4 5 1 11 2 5 5 1 12"
    PARIS1="2 5 5 1 12 2 6 5 1 13 2 5 5 1 16"
     
    LISTEBSC="RENNES1 PARIS1"
     
    # Je veux le 5° élément de LISTEBSC[1] (soit 11)
    get 5 $(eval echo \$$(get 1 $LISTEBSC))
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 646
    Par défaut
    Citation Envoyé par Sve@r
    Et en plus suis certain que parfois il attend avec impatience de voir si je peux m'en sortir...
    c'est vrai.



    cependant, le problème est le même qu'avec le script de jovalise.

    quel langage supporte les tableaux de tableaux ? PHP ? perl ? python ? ...?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    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 : 34
    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
    Par défaut
    Bonjour.

    quel langage supporte les tableaux de tableaux ? PHP ? perl ? python ? ...?
    Les trois

    Sinon avec awk ?

    Idriss

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ok.Idriss Voir le message
    Les trois
    Il serait peut-être plus facile de lister les langages qui ne connaissent pas les tableaux de tableaux (ou plus généralement les tableaux à plusieurs dimensions) parce que c'est devenu classique dans tous les langages un minimum évolués...

    Citation Envoyé par ok.Idriss Voir le message
    Sinon avec awk ?
    Tu parles d'utiliser awk dans le shell pour simuler les tableaux en extrayant les valeurs (comme j'ai fait avec cut) ou bien mettre des tableaux multi-d dans le code awk ???
    Et puis là aussi il y a awk, nawk, gawk...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. script pour transormer un tableau
    Par tarte-au-sucre dans le forum Langage
    Réponses: 3
    Dernier message: 27/03/2011, 17h03
  2. [Tableaux] Script pour dédoubler un tableau de tableau
    Par arnaudperfect dans le forum Langage
    Réponses: 6
    Dernier message: 13/02/2009, 21h58
  3. Explode en bash dans un tableau
    Par Maillon dans le forum Linux
    Réponses: 6
    Dernier message: 18/11/2008, 08h18
  4. Cherche Script : lister repertoire dans tableau html
    Par julos08 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 04/07/2008, 01h14
  5. Réponses: 1
    Dernier message: 07/08/2007, 13h05

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