La mejor manera es pasar como argumentos de posición. Nada más. Puede pasar como cadena, pero de esta manera puede causar algunos problemas. Ejemplo:
array=(one two three four five)
function show_passed_array(){
echo $@
}
o
function show_passed_array(){
while $# -gt 0;do
echo $1;shift
done
}
show_passed_array ${array[@]}
salida:
one two three four five
Quiere decir que si el valor de la matriz tiene símbolos de espacio, debe citar los elementos antes de pasar para acceder al valor por índice en la función, use los parámetros de posición $ 1 $ 2 $ 3 ... Donde índice 0 -> 1, 1 -> 2, ... Para iterar el acceso, es mejor usar siempre $ 1 y después de Shift. No se necesita nada adicional. Puede pasar argumentos sin una matriz como esta:
show_passed_array one two three four five
bash media crea automáticamente una matriz a partir de argumentos pasados que los pasaron a funcionar y luego tiene argumentos de posición. Además, cuando escribe $ {array [2]}, realmente escribe el argumento consecuente uno dos tres cuatro y los pasa a la función. Entonces esas llamadas son equivalentes.