IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

les tableaux à 2 dimensions ?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Par défaut les tableaux à 2 dimensions ?
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    var_tab_ip="ip1 ip2 ip3 " , "22 80 110"
    il faudrait ensuite boucler sur les le(s) tableaux de manière à obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    début de la boucle:
    iptables [ip1] [22]
    iptables [ip2] [80]
    iptables [ip3] [110]
    fin de la boucle
    echo "de l'insertion des règle"
    mais je ne sais pas si c'est possible ?
    Merci d'avance

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    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.

  3. #3
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Salut.

    Tu doit pouvoir faire des tableaux de tableaux ...

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
     
    array2[0]=1
    array[0]=$array2
     
    echo ${array[0][0]}
    Cordialement,
    Idriss

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Par défaut
    merci pour vos 2 réponses voila en plus clair , ceci peut être pour un débutant (comme moi )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    array2[0]=1
    array3[0]=3
    array[0]=$array2
    array[1]=$array3
     
    echo ${array[1][0]}
    echo ${array[0][0]}
    Edit:
    petit souci on dirait que ça coince
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    arrayip="1 3 6 "
    arrayport="22 40 44"
    array[0]=$arrayip
    array[1]=$arrayport
    echo ${array[1][1]}
    echo ${array[0][1]}
    renvoie

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 172
    Par défaut
    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.

  6. #6
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Citation Envoyé par AnozerOne Voir le message
    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
    En effet, j'ai cette impression aussi. Bref, c'était une piste à explorer (car valable d'un point de vue algorithmique) ... mais bon ça ne fonctionne pas

    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

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 172
    Par défaut
    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

Discussions similaires

  1. Les tableaux deux dimensions
    Par Youbi dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 23/02/2010, 12h05
  2. question bête sur les tableaux à 2 dimensions
    Par laurentSc dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/10/2009, 22h41
  3. Algorithme sur les tableaux à grandes dimensions
    Par bobo034 dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 26/05/2008, 16h11
  4. Réponses: 12
    Dernier message: 17/12/2006, 11h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo