Forum Programmation.autre [Bash] Mise en tableau de liste

Posté par  .
Étiquettes : aucune
0
5
mar.
2008
Salut à tous,

Je recherche le moyen mettre en rapport les éléments de mes variables, je m'explique (enfin j'essaye)

J'ai une variable $VAR1 qui contient ceci:
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins
Domain Admins


La deuxième $VAR2 ceci:
drwxr-sr-x
drwxrwsr-x
drwxrwsr-x
drwxr-sr-x
drwxr-sr-x
drwxr-sr-x
drwxr-sr-x
drwxr-sr-x
drwxr-sr-x
drwxr-sr-x
drwxr-sr-x
drwxr-sr-x
drwxr-sr-x
drwxr-sr-x
drwxr-sr-x
drwxr-sr-x
drwxr-sr-x
drwxr-sr-x


J'aimerai que le premier élément de la liste de ma variable 1 soit afficher en sortie avec le premier éléments de ma deuxième variable, comme ceci par exemple:

Domain Admins         drwxr-sr-x
élément_2_VAR1 élément_2_VAR2
[...]


La seul sortie que j'arrive à avoir sont le contenu de la $VAR1 puis $VAR2.

Peut ont comme en Perl désigner les éléments d'une liste ($VAR1[#1]) ?


Merci de vos suggestion ;-)


p.s.: j'aimerai ne pas dériver vers un autre langage que bash (même perl :-) )
  • # Doc bash

    Posté par  . Évalué à 1.

    Tu devrais trouver ton bonheur dans l'"Advanced Bash-Scripting Guide", section "Arrays" : http://tldp.org/LDP/abs/html/arrays.html
  • # petit script bash

    Posté par  . Évalué à 1.

    AVE

    essaye de faire un script de ce genre :

    #!/bin/bash
    OUT=sortie.txt
    cat /dev/null > $OUT
    i=1
    while [ $i -le $(echo $VAR1 | wc -l) ]
    do
    echo $(echo $VAR1 | head -$i | tail -1)" "$(echo $VAR2 | head -$i | tail -1) >> $OUT
    i=$(expr $i + 1)
    done
    cat $OUT


    Bonne chance !

    @+
    --
    François
    • [^] # Re: petit script bash

      Posté par  . Évalué à 1.

      En rajoutant l'option -e à echo, et en remplaçant le " " par "\t" dans la grande ligne echo ..., tu auras une tabulation entre tes deux champs.
  • # paste

    Posté par  . Évalué à 2.

    Si tu peux mettre tes variables dans des fichiers, tu peux utiliser la commande paste.
    Je n'ai pas tres bien compris si tes variables sont des tableaux ou pas.
    Si ce sont des tableaux, le commentaire numero 1 devrait t'aider àç utiliser la syntaxe bash pour les arrays.
    Sinon, tu devrais pouvoir faire :
    paste <(echo $var1) <(echo $var2)
  • # ma solution

    Posté par  (site Web personnel) . Évalué à 1.


    #!/bin/bash

    var1="toto1 toto2 toto3"
    var2="tata1 tata2 tata3"

    tab_var1=($(echo $var1))
    tab_var2=($(echo $var2))

    for i in `seq 0 $[${#tab_var1[@]} - 1]`; do
        printf "%-10s %s\n" ${tab_var1[i]} ${tab_var2[i]}
    done

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.