Problème de variable comme nom de tableau
Fermé
Seb
-
24 sept. 2013 à 14:40
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 - 26 sept. 2013 à 08:08
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 - 26 sept. 2013 à 08:08
A voir également:
- Problème de variable comme nom de tableau
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Tableau de combinaison loto 5/90 - Forum Excel
3 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
24 sept. 2013 à 18:16
24 sept. 2013 à 18:16
Salut,
Et comment est déclaré ton tableau ?
Peut être qu'avec ton code en entier (ou du moins un bout subséquent), on y verrait plus clair ;-(
Et comment est déclaré ton tableau ?
Peut être qu'avec ton code en entier (ou du moins un bout subséquent), on y verrait plus clair ;-(
Flachy Joe
Messages postés
2103
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
21 novembre 2023
260
24 sept. 2013 à 22:17
24 sept. 2013 à 22:17
Salut,
Voila une solution en Bash, en ksh je sais pas ce que ça donne :
Voila une solution en Bash, en ksh je sais pas ce que ça donne :
#!/bin/bash
traderidera=( machin truc chose )
nom='traderidera'
t0=${nom}[*]
echo "le tableau résultat est: ${!t0}"
Flachy Joe
Messages postés
2103
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
21 novembre 2023
260
Modifié par Flachy Joe le 24/09/2013 à 22:42
Modifié par Flachy Joe le 24/09/2013 à 22:42
Ce n'était pas valide en ksh mais voila une version compatible :
eval t1=\${${nom}[*]}
echo "le tableau résultat est: $t1"
Seb_6369
Messages postés
5
Date d'inscription
mercredi 25 septembre 2013
Statut
Membre
Dernière intervention
25 septembre 2013
25 sept. 2013 à 09:29
25 sept. 2013 à 09:29
Merci Flachy_Joe, j'ai bien essayé mais ça ne semble pas fonctionner pour mon cas...
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
25 sept. 2013 à 10:07
25 sept. 2013 à 10:07
hello
et comme ça
et comme ça
NOM_TAB=GROUPE_00
echo $NOM_TAB
nom=tab_${NOM_TAB}
echo $nom
set -A ${!nom} ELEMENT1 ELEMENT2
echo "le tableau resultat est : ${nom[*]}"
résultat
+ NOM_TAB=GROUPE_00
+ echo GROUPE_00
GROUPE_00
+ nom=tab_GROUPE_00
+ echo tab_GROUPE_00
tab_GROUPE_00
+ set -A nom ELEMENT1 ELEMENT2
+ echo 'le tableau resultat est : ELEMENT1 ELEMENT2'
le tableau resultat est : ELEMENT1 ELEMENT2
Seb_6369
Messages postés
5
Date d'inscription
mercredi 25 septembre 2013
Statut
Membre
Dernière intervention
25 septembre 2013
Modifié par Seb_6369 le 25/09/2013 à 10:17
Modifié par Seb_6369 le 25/09/2013 à 10:17
Hello dubcek,
je viens de faire le test mais la réponse ne correspond pas à la tienne :'(
je ne pense pas avoir fait d'erreur dans le code ;)
#!/usr/bin/ksh -x
NOM_TAB=GROUPE_00
echo $NOM_TAB
nom=tab_${NOM_TAB}
echo $nom
set -A ${!nom} ELEMENT1 ELEMENT2
echo "le tableau resultat est : ${nom[*]}"
+ NOM_TAB=GROUPE_00
+ echo GROUPE_00
GROUPE_00
+ nom=tab_GROUPE_00
+ echo tab_GROUPE_00
tab_GROUPE_00
./test.ksh[7]: : bad substitution
je viens de faire le test mais la réponse ne correspond pas à la tienne :'(
je ne pense pas avoir fait d'erreur dans le code ;)
#!/usr/bin/ksh -x
NOM_TAB=GROUPE_00
echo $NOM_TAB
nom=tab_${NOM_TAB}
echo $nom
set -A ${!nom} ELEMENT1 ELEMENT2
echo "le tableau resultat est : ${nom[*]}"
+ NOM_TAB=GROUPE_00
+ echo GROUPE_00
GROUPE_00
+ nom=tab_GROUPE_00
+ echo tab_GROUPE_00
tab_GROUPE_00
./test.ksh[7]: : bad substitution
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
25 sept. 2013 à 11:17
25 sept. 2013 à 11:17
quelle version de ksh ?
ksh ~ $ ksh --version
version sh (AT&T Research) 93t+ 2009-05-01
Seb_6369
Messages postés
5
Date d'inscription
mercredi 25 septembre 2013
Statut
Membre
Dernière intervention
25 septembre 2013
25 sept. 2013 à 11:39
25 sept. 2013 à 11:39
pdksh-5.2.14-36.el5
(je n'ai malheureusement pas la possibilité d'avoir une version plus... récente ;))
(je n'ai malheureusement pas la possibilité d'avoir une version plus... récente ;))
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
25 sept. 2013 à 15:51
25 sept. 2013 à 15:51
ceci fonctionne ?
ksh ~ $ a=11
ksh ~ $ nameref b=a
ksh ~ $ echo $b
11
ksh ~ $ echo ${!b}
a
Seb_6369
Messages postés
5
Date d'inscription
mercredi 25 septembre 2013
Statut
Membre
Dernière intervention
25 septembre 2013
25 sept. 2013 à 18:01
25 sept. 2013 à 18:01
dubcek
Je viens de faire le test sur la machine à disposition et ça ne fonctionne pas :
./t.sh
+ a=11
+ nameref b=a
./t.sh[4]: nameref: not found
+ echo
./t.sh[6]: : bad substitution
J'ai fais le test sur une autre machine possédant une autre souche et là, oh miracle ça marche. Cela semble donc venir de la souche qui est incompatible, je vais donc demander une nouvelle souche :D
Je viens de faire le test sur la machine à disposition et ça ne fonctionne pas :
./t.sh
+ a=11
+ nameref b=a
./t.sh[4]: nameref: not found
+ echo
./t.sh[6]: : bad substitution
J'ai fais le test sur une autre machine possédant une autre souche et là, oh miracle ça marche. Cela semble donc venir de la souche qui est incompatible, je vais donc demander une nouvelle souche :D
Modifié par qqchquicommenceparQ le 24/09/2013 à 18:39
c'est moins un problème de code que d'algo;
et plus précisément, d'adaptation de l'algo aux capacités du langage choisi.
En l'occurrence, le shell ne peut pas faire ça.
25 sept. 2013 à 09:28
voici plus de détails sur le code. J'ai fait un extrait de la partie qui nous interesse (normalement cette partie est intégré dans un while qui change la variable "NOM_TAB" et les éléments:
#!/usr/bin/ksh -x
NOM_TAB=GROUPE_00
echo $NOM_TAB
nom=tab_${NOM_TAB}
echo $nom
set -A ${nom} ELEMENT1 ELEMENT2
echo "le tableau resultat est : ${${nom}[*]}"
Voici le résultat :
+ NOM_TAB=GROUPE_00
+ echo GROUPE_00
GROUPE_00
+ nom=tab_GROUPE_00
+ echo tab_GROUPE_00
tab_GROUPE_00
+ set -A tab_GROUPE_00 ELEMENT1 ELEMENT2
./test.ksh[8]: : bad substitution
Merci d'avance pour votre aide