#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
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