|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : décembre 2006 Messages : 183 ![]() |
Hello
Je me demande si un tableau à 2 dimensions est possible ? je compte m'en servir pour un petit script iptables. l'idée c'est 1 tableau pour les ip, le second pour les ports on pourrait donc : Code :
var_tab_ip="ip1 ip2 ip3 " , "22 80 110" Code :
Merci d'avance |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 534 ![]() |
Il n'est pas possible en bash d'utiliser un tableau à deux dimensions avec les fonctions natives.
Mais avec un peu de logique on peut utiliser un algo qui fait comme si une page d'exemple : http://abs.traduc.org/abs-5.0-fr/ch26.html ceci dit tu peux aussi jouer avec awk ou autre chose qu'un bash. |
|
|
10
|
|
|
#3 | ||
![]() ![]() Idriss NeumannConsultant en SSII et étudiant au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 1 980 ![]() |
Salut.
Tu doit pouvoir faire des tableaux de tableaux ... Exemple : Code :
Idriss |
||
|
11
|
|
|
#4 | ||||
|
Membre du Club
![]() Inscription : décembre 2006 Messages : 183 ![]() |
merci pour vos 2 réponses voila en plus clair , ceci peut être pour un débutant (comme moi )
Code :
petit souci on dirait que ça coince Code :
|
||||
|
|
20
|
|
|
#5 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 166 ![]() |
La réponse de ok.Idriss m'intrigue, est ce que ca ne serait pas une erreur de sa part ?
Je veux dire que cela ne me semble pas possible de cette manière et que j'ai l'impression que le bash se contente d'ignorer le deuxième crochet (sans vomir d'erreur de syntaxe au passage). Merci d'éclairer ma lanterne. |
|
|
00
|
|
|
#6 | |
![]() ![]() Idriss NeumannConsultant en SSII et étudiant au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 1 980 ![]() |
Bonjour.
Citation:
![]() Sinon comme l'a montré frp31, il y a d'autres façons de simuler les tableau 2D notamment dans l'advanced bash scripting guide au chapitre des tableaux. Sinon bash ne m'a pas signalé d'erreur de syntaxe. Cordialement, Idriss |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 166 ![]() |
C'est bien ce qui me semblait, si il y a bien un truc qui manque au bash c'est la possibilité qu'une fonction retourne un valeur (exit ne compte pas).
On aurait ainsi pu faire une fonction ArrayGet et ArraySet, bien plus lisible à mon humble avis. Court se cacher dans un coin pour éviter les foudres des utilisateurs réguliers de bash |
|
|
00
|
|
|
#8 | |||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
Citation:
Code :
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|||
|
|
20
|
|
|
#9 | ||
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 166 ![]() |
Huhu, bon bah j'ai plus qu'à RTFM
![]() EDIT : Hmm en fait je l'avais bien lu, mais bon être dans la capacité de retourner seulement une valeur entre 0 et 255 n'est pas ce que je voulais dire par la capacité de retourner une valeur, ca ne peut servir essentiellement que comme code de retour ... Même si oui on peut utiliser une variable globale intermédiaire et $? on ne peut pas faire cela : Code :
|
||
|
|
00
|
|
|
#10 | ||
|
Membre éclairé
![]() Inscription : février 2011 Messages : 83 ![]() |
Exemple de script que je fais en ce moment utilisant des tableaux à plusieurs dimensions :
http://www.secteur7.net/div/qmenu Et c'est en sh, avec bash les possibilités sont plus nombreuses. Exemple dans le code de qmenu : Code :
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee "Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley) clean |
||
|
|
00
|
|
|
#11 | |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 166 ![]() |
Je viens de découvrir les associative array en bash (introduit depuis bash 4.1)
Citation:
Etant donné que le paramètre est un string on peut même utiliser des index négatifs. PS : Le xD, même s'il représente une X dimension est aussi un smiley et oui c'est voulu, car je considère cela plus comme un gadget à utiliser avec parcimonie dans un script perso qu'autre chose
|
|
|
|
00
|
|
|
#12 | |||
|
Membre du Club
![]() Inscription : décembre 2006 Messages : 183 ![]() |
Citation:
c'est pas facilement lisible le truc, je ne pense pas que je vais m'en servir, mai ça peux servir a d'autre. le but c'est que sa fonctionne déjà ![]() Merci pour le code. |
|||
|
|
00
|
|
|
#13 | |||||
|
Membre du Club
![]() Inscription : décembre 2006 Messages : 183 ![]() |
Citation:
Mais comment on boucle dessus avec une boucle for ? pour les 2 tableau direct on fait: Code :
en gros : Code :
|
|||||
|
|
00
|
|
|
#14 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 166 ![]() |
Tu veux faire quoi exactement ?
Je veux dire boucler sur le tableau dans un ordre particulier ou non ? Tu veux faire quoi avec chaque élément du tableau, etc ... |
|
|
00
|
|
|
#15 |
|
Membre éclairé
![]() Inscription : février 2011 Messages : 83 ![]() |
Le trux à en retenir, c'est que sous bash, tu peux combiner la méthode eval, ET la méthode des tableaux natifs bash (donc avoir un tableau a une dimension de la forme ${array[x]}, et en plus un tableau de ce tableau avec eval). Ca fait une syntaxe un petit peu moins compliquée.
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee "Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley) clean |
|
|
00
|
|
|
#16 | |||
|
Membre du Club
![]() Inscription : décembre 2006 Messages : 183 ![]() |
Citation:
pour la suite : on peux prendre iptables pour y voir un peux plus claire.hum.. iptables -A INPUT -p tcp --dport $port -m iprange $ip il suffi donc d'avoir les port et l'ip dans 2 tableau qui seron remplis auparavant. pour reprendre le code plus bas: Code :
merci pour vos réponse |
|||
|
|
00
|
|
|
#17 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 166 ![]() |
xDarray[ip port]=<valeur>
Tu as comme clefs l'ip et le port, mais utilises tu aussi la valeur stockée "<valeur>" ? Ça peut paraître très débile comme question, mais comme tu n'en parles pas je préfères demander, car si tu n'utilises pas la valeur stockée, alors un tableau en 1 dimension suffit. (ne t'offusque pas si cela te semble évident, personne n'est à l'abri d'une bête erreur de conception) |
|
|
00
|
|
|
#18 | |||
|
Membre du Club
![]() Inscription : décembre 2006 Messages : 183 ![]() |
Citation:
par exemple: Code :
je peux pas utiliser le port comme reference ,ni l'ip, mai je peux boucler sur le nombre d'élément, chose que j'ai trouver dans le prescedant post, reste a faire reference aux bon tableaux ? |
|||
|
|
00
|
|
|
#19 | ||
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 166 ![]() |
Code :
|
||
|
|
00
|
|
|
#20 |
|
Membre du Club
![]() Inscription : décembre 2006 Messages : 183 ![]() |
merci pour ta réponse,
mais ta boucle liste les tableaux sur le premier index, puis passe à l'index suivant. il me faut lors du même passage avoir accès aux "valeur stockée" des 2 index sur la même ligne (sinon un tableau simple suffit) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com