Shell: variable pour construire une autre var

Résolu
bijnok Messages postés 87 Statut Membre -  
bijnok Messages postés 87 Statut Membre -
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

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    eval cat table${table}

    Voir ce vieux thread
    1
  2. bijnok Messages postés 87 Statut Membre 12
     
    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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Essaye :

      cat $(eval echo \$table$table)
      0
    2. bijnok Messages postés 87 Statut Membre 12
       
      Solutions qui fonctionnent:

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


      Merci pour tout
      0