Shell: variable pour construire une autre var

Résolu/Fermé
bijnok Messages postés 62 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 6 octobre 2015 - 19 mai 2010 à 11:04
bijnok Messages postés 62 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 6 octobre 2015 - 19 mai 2010 à 12:12
Bonjour,

j'ai plusieurs tables MySQL et je souhaite automatiser leur création à l'aide d'un script Shell.
Le script de la table TABLEi est dans ./mysql/TABLEi.sql.

Voici mon souci:


# variable contenant le nom de la table à traiter
[root]# table=TABLE1

# variable contenant le chemin du script pour la variable à traiter
[root]# tableTABLE1=./mysql/TABLE1.sql

# creation de la seconde variable à partir de la premiere
[root]# cat $((table$table))
-bash: ./mysql/TABLE1.sql: syntax error: operand expected (error token is "./mysql/TABLE1.sql")


J'ai vérifié, mes fichiers sont bien en place.
J'ai aussi essayé de protéger les variables dans tous les sens mais rien n'y fait. Je sais que $(()) est utilisé pour les expressions arithmétiques habituellement

Ceci me renvoie bien le nom de la variable que je cherche à interpréter:

[root]#  echo table$table
tableTABLE1


Je cherche donc à faire comprendre au shell que tableTABLE1 est une variable.

Pour ce qui est de la boucle à faire sur mes n tables, je m'en charge, merci.

En esperant avoir été suffisamment clair,

merci par avance,

Bijnok

:D :D :D



A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
19 mai 2010 à 11:13
Salut,

eval cat table${table}

Voir ce vieux thread
1
bijnok Messages postés 62 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 6 octobre 2015 12
Modifié par bijnok le 19/05/2010 à 11:32
J'avais déjà essayé avec eval mais cela ne fonctionne pas, la variable tableTABLE1 n'est pas interprétée.

[root]#  eval cat table${table} 
cat: tableTABLE1: No such file or directory 


Merci quand même ^^

------------ EDIT ---------------

J'ai trouvé, je n'avais pas parcouru entièrement les posts de

https://forums.commentcamarche.net/forum/affich-1651850-script-bash-variable-d-environnement#7


Désolé j'ai pas trouvé le BBCode pour insérer proprement l'url.

[root]# eval echo "$""table$table"
./mysql/TABLE1.sql



Merci jipicy
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
19 mai 2010 à 12:03
Essaye :

cat $(eval echo \$table$table)
0
bijnok Messages postés 62 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 6 octobre 2015 12
19 mai 2010 à 12:12
Solutions qui fonctionnent:

cat $(eval echo \$table$table)
cat $(eval echo "$""table$table")


Merci pour tout
0