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 :

Tableau avec un nom variable


Sujet :

Shell et commandes GNU

  1. #1
    Invité
    Invité(e)
    Par défaut Tableau avec un nom variable
    Bonjour,

    J'essaye d'utiliser une variable pour avoir le contenu d'un tableau plutôt qu'un autre. Mais ça ne fonctionne pas. Auriez-vous une idée?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ tableau_1=(1 2 3 4)
    $ tableau_2=(5 6 7 8)
    $ choix=1
    $ i=2
     
    $ echo tableau_$choix[$i]
    tableau_1[2]
     
    $ echo ${tableau_$choix[$i]}
    bash: ${tableau_$choix[$i]} : mauvaise substitution

    Merci d'avance.

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

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

    Citation Envoyé par Coluche
    Dites-nous ce dont vous avez besoin, on vous expliquera comment vous en passer.
    pourquoi crois-tu avoir besoin de faire ça comme ça ?

    je préfère d'abord dire que ce n'est pas possible, et demander pourquoi, avant d'apporter une mauvaise solution.

    au vu de tes précédentes question, tu devrais envisager d'utiliser un langage plus puissant, plutôt que de pousser le shell dans des retranchements très vite atteints !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,



    pourquoi crois-tu avoir besoin de faire ça comme ça ?

    je préfère d'abord dire que ce n'est pas possible, et demander pourquoi, avant d'apporter une mauvaise solution.

    au vu de tes précédentes question, tu devrais envisager d'utiliser un langage plus puissant, plutôt que de pousser le shell dans des retranchements très vite atteints !
    3615 mylife: J'extrais des données d'un fichier d'un mmo. Il contient des noms localisés suivant sa version (chinois, anglais, fr, etc). J'automatise au maximum l'extraction de ces noms pour mettre à jour une base de donnée pour mon site perso. J'utilise le shell car j'avais besoin de monter en compétence unix/linux pour mon travail. Ca me permet donc de voir des commandes que je ne connais pas et qui pourront m'être bien utile.

    Ici j'ai 256 tableau contenant chacun 256 nombres donc un peu comme dans mon exemple. J'ai imaginé cette solution qui semble fonctionner correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ tableau=(1 2 3 4 5 6 7 8)
    $ choix=1
    $ i=2
    $ echo ${tableau[$((choix*4+i))]}
    7
    $ choix=0
    $ echo ${tableau[$((choix*4+i))]}
    3
    Vu ta réponse, je suppose qu'il ne doit pas y avoir plus simple?
    Mais bon, le tableau dans la version final este trop grand apparemment. Je vais donc faire encore différemment.
    Dernière modification par Invité ; 15/12/2012 à 21h22.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 657
    Par défaut
    si les tableaux ne contiennent que des nombres (c'est-à-dire des éléments insécables, pas des phrases), alors peux-tu utiliser des "tableaux" associatifs, que tu transfereras, éventuellement, dans un tableau indexé ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    declare -A monTableau
    monTableau[zn]="1 21 32" #edit : pas monTableau[zn]=(1 21 32)
    monTableau[fr]="1 2 3" # edit : pas monTableau[fr]=(1 2 3)
    choix=zn
    TableauUtilise=( ${monTableau[$choix]} )
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ca ne fonctionne pas sur cygwin, mais ça semblait une bonne idée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ declare -A monTableau
    $ monTableau[zn]=(1 21 32)
    bash: monTableau[zn] : impossible d'affecter une liste à un élément de tableau

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 657
    Par défaut
    pardon, je me suis mélangé les pinceaux.

    le tableau associatif c'est monTableau, et c'est à chaque élément du tableau que tu assignes les données, comme pour une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    declare -A monTableau
    monTableau[zn]="1 21 32"
    monTableau[fr]="1 2 3"
    choix=zn
    TableauUtilise=( ${monTableau[$choix]} )
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Invité
    Invité(e)
    Par défaut
    C'est parfait, merci

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

Discussions similaires

  1. Nommer un nouvel onglet avec un nom variable
    Par machintruc84 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/11/2008, 10h23
  2. Selection de feuille avec un nom variable
    Par kakov dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/10/2008, 15h50
  3. Charger un fichier avec un nom variable
    Par GuilloOm dans le forum Octave
    Réponses: 2
    Dernier message: 21/07/2008, 17h19
  4. [MySQL] remplir un tableau avec les noms des champs d'une table
    Par solidaritok dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/04/2007, 13h47
  5. [XSLT] - Comment selectionner une balise avec un nom variable ?
    Par bchabot dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/04/2006, 09h59

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