Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/08/2012, à 15:55

philoup44

L'indice des "Tableaux à trous"

Salut

Je cherche à copier les valeurs d'un tableau à trou dans un autre tableau
Mais avec les memes indices ...

J'ai essayé plusieurs écritures différentes

a[10]=un
a[17]=deux
a[11]=trois

echo ${a[@]}        # un trois deux
echo ${a[1]}        # vide
echo ${#a[@]}       # 3
echo ${!a[@]}       # 10 11 17
echo "${!a[@]}"     # 10 11 17
echo ""${!a[@]}""   # 10 11 17

#declare -a

b="${a[@]}"
#b=`eval echo ${!a[@]}`
echo $b         # un trois deux
echo ${b}       # un trois deux
echo ${!b[@]}   # 0
eval echo ${!b[@]}   # 0

c=("${a[@]}")
echo $c         # un
echo ${c[@]}    # un trois deux
echo ${!c[@]}   # 0 1 2


d=${!a[@]}
echo $d         # 10 11 17

e=${a[*]}
echo $e         # un trois deux
echo ${!e[*]}   # 0

f=a
echo $f         # a
echo ${f[*]}    # a
echo ${!f[*]}   # 0

g=("${a[*]}")
echo $g         # un trois deux
echo ${g[*]}    # un trois deux
echo ${!g[*]}   # 0

h=(${a[*]})
echo $h         # un
echo ${h[*]}    # un trois deux
echo ${!h[*]}   # 0 1 2

J'arrive bien à avoir les memes valeurs mais pas les memes indices
La seule méthode que j'ai trouvée est celle ci

declare -a tab
tab[10]=un
tab[17]=deux
tab[11]=trois

echo ${tab[@]}        # un trois deux
echo ${tab[1]}        # vide
echo ${#tab[@]}       # 3
echo ${!tab[@]}       # 10 11 17
echo "${!tab[@]}"     # 10 11 17
echo ""${!tab[@]}""   # 10 11 17

declare -a tempo
for k in "${!tab[@]}"
do

tempo[k]=${tab[k]}

done

echo ${tempo[*]}     # un trois deux
echo ${!tempo[*]}    # 10 11 17
echo ${#tempo[@]}    # 3

ici, j'ai bien les valeurs attachées aux memes indices
N'y a t-il pas une autre méthode ??

NB
Ce n'est pas urgent ...
Merci smile

Hors ligne

#2 Le 23/08/2012, à 21:47

pingouinux

Re : L'indice des "Tableaux à trous"

Bonsoir philoup44,
C'est aussi comme ça que j'aurais fait (ta dernière méthode) pour copier le tableau en conservant les mêmes indices.

for k in "${!tab[@]}"
do
   tempo[k]=${tab[k]}
done

Hors ligne

#3 Le 24/08/2012, à 00:13

philoup44

Re : L'indice des "Tableaux à trous"

Salut pingouinux
merci pour ta réponse

Pas d'autres méthodes plus simples ??
style Tableau A = Tableau B

Hors ligne