Tableau contenant des variables - Script bash

Tableau contenant des variables - Script bash - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 17-04-2012 à 21:06:32    

 
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 ListeBSC[0][0].
 
 
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.
 
 
Voici le script bash qui permet de declarer les différents tableaux.

Code :
  1. #/bin/bash
  2. RENNES1 = (2.4.5.1.11 2.5.5.1.12)
  3. PARIS1      = (2.5.5.1.12 2.6.5.1.13 2.5.5.1.16)
  4. ListeBSC = (RENNES1 PARIS1)


 
 
Je vous remercie d'avance

Reply

Marsh Posté le 17-04-2012 à 21:06:32   

Reply

Marsh Posté le 03-11-2012 à 11:55:22    

Bonjour, j ne sais pas si ça va répondre à ton problème, mais voici "une solution"
 

Code :
  1. #!/bin/bash
  2. RENNES1 = (2.4.5.1.11 2.5.5.1.12)
  3. PARIS1      = (2.5.5.1.12 2.6.5.1.13 2.5.5.1.16)
  4. ListeBSC = (${RENNES1},${PARIS1})
  5.  
  6. # afficher tous les éléments de RENNES1
  7. echo ${ListeBSC[0][*]}

Reply

Marsh Posté le 03-11-2012 à 12:26:06    

salut,
 
attention! déterrrage de 6 mois !
 
ah, ben, ça risque, en effet, pas de répondre au problème!
une solution ? mais en quel langage?
 
quand on n'est pas sûr, on fait des tests avant de poster, et quand on ne sait pas ... on ne sait pas!

Reply

Marsh Posté le 03-11-2012 à 12:40:30    


C'est comme le fromage, c'est écrit dessus.
 
Et ben si tu sais pas, tu sais pas, mais ça c'est testé et vérifié par mes soins.
 
A bon entendeur, salut.  [:cricrou92]

Reply

Marsh Posté le 03-11-2012 à 12:58:16    


 
Arf, autant pour moi, quelque soit la valeur du paramètre en place de '*' ça affiche le tableau entier.
J'avais pas fait gaffe.
Désolé, je cherche.

Reply

Marsh Posté le 03-11-2012 à 14:47:57    

Je ne sais pas si cette "solution" peu convenir mais j'ai cherché, et j'ai trouvé ceci :

Code :
  1. #!/bin/bash                                                                    
  2. RENNES1=(2 4 5 1 11 2 5 5 1 12)
  3. PARIS1=(2 5 5 1 12 2 6 5 1 13 2 5 5 1 16)
  4.  
  5. # On place les deux tableau dans un troisième tableau
  6. ListeBSC[0]=${RENNES1[*]}
  7. ListeBSC[1]=${PARIS1[*]}
  8.  
  9. # afficher le 2ieme éléments de RENNES1                                        
  10. # On récupère d abord le tableau duquel on souhaite un élément.
  11. effective=(${ListeBSC[0]})
  12.  
  13. # Enfin On effiche l élément désiré.
  14. echo ${effective[1]}

Reply

Marsh Posté le 03-11-2012 à 16:23:23    

Si les éléments d'un tableau sont constitués de plusiers mots, alors ta solution ne représentera pas correctement les données.
 
Il faut dire que ce que veut faire pachoulcs n'est pas possible en shell (bash, ou ksh).
 
On peut jouer avec leur capacité à gérer les tableaux associatifs, mais les tableaux multidimensionnels ne sont pas implémentés.
 
Il vaut mieux, si c'est indispensable, utiliser un langage qui peut les utiliser : perl, python ?

Reply

Marsh Posté le 03-11-2012 à 17:01:35    

Je cherche parce que je suis sur un doc là....
 

Citation :

$ cat arraymanip.sh
#! /bin/bash
Unix[0]='Debian'
Unix[1]='Red hat'
Unix[2]='Ubuntu'
Unix[3]='Suse'
 
echo ${Unix[1]}
 
$./arraymanip.sh
Red hat


 
certainement pas un faux :
 
Sources : http://www.thegeekstuff.com/2010/0 [...] -tutorial/
Oups, c'est mon code qui marche pas, zut, je vois pas la nuance syntaxique.


Message édité par Profil supprimé le 03-11-2012 à 17:04:20
Reply

Marsh Posté le 03-11-2012 à 17:13:46    

Citation :

je vois pas la nuance syntaxique.


qu'est-ce que tu veux dire ?
 
remplace les nombres par des mots

Code :
  1. RENNES1=( foo 'bar baz' )
  2. PARIS1=( foo1 'bar1 baz1' )

et essaye d'afficher le deuxième élément de l'un des tableaux à l'aide de ton script.
 
regarde aussi ce post


Message édité par Profil supprimé le 03-11-2012 à 17:15:09
Reply

Marsh Posté le 03-11-2012 à 17:39:38    

Je me demande s'il est possible de protéger soit l'espace soit les quote dans les chaînes, c'est tout.


Message édité par Profil supprimé le 03-11-2012 à 17:39:51
Reply

Marsh Posté le 03-11-2012 à 17:39:38   

Reply

Marsh Posté le 03-11-2012 à 18:55:21    

non.

Reply

Marsh Posté le 03-11-2012 à 18:59:27    

Merci.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed