Considérons que j'ai un très grand tableau $large_list
, existe-t-il un moyen d'écrire une fonction qui prendra le tableau en argument? Par exemple:
echo_idx_array () {
arr="$1"
idx="$2"
echo "${arr[$idx]}"
}
Quelle est la stratégie habituelle pour faire quelque chose comme ça? J'ai essayé de donner la variable $large_list
mais elle était vide.
Je suis prêt à modifier la fonction pour l'adapter à tout changement dans la liste des arguments.
Pour mémoire, j'utilise ksh88, et je recherche des réponses aussi portables que possible.
EDIT : Jusqu'à présent, le mieux que j'ai pu trouver est de parcourir le tableau et d'envoyer chaque élément comme argument à la fonction. Cela semble incroyablement laid et sujet aux erreurs, sans parler du fait qu'il atteindra rapidement une limite. Voici ce que j'ai fait:
foo () {
echo $*
}
cmd="foo "
while [[ $i -lt $MAX_ARR_SIZE ]]; do
cmd="$cmd ${large_list[$i]}"
((i=i+1))
done
eval $cmd
N'y a-t-il pas quelque chose de mieux à faire?
"${array[$@]}
. Votre suggestion fonctionne réellement. Mea culpa.
func "${array[@]}"
? Si vous avez seulement besoin de passer un élément, passez simplement l'élément - pas besoin de le rendre plus compliqué en passant un tableau et un index.