1 2 3 4 5 6 7 8 9 10 11 |
#!/bin/bash function Iterate() { arr=("$@") for IDX in "${arr[@]}"; do echo "$IDX" done } array=("arg1" "arg-2" "arg 3") Iterate "${array[@]}" |
O también puede ser, pasarselo por referencia. Es más entendible :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/bash get_arr() { declare -n array_param="$1" echo "Elementos: ${array_param[@]}" } arr1=(a be ce de) arr2=(uno dos tres cuatro) get_arr arr1 get_arr arr2 |
Al ejecutarlo obtendriamos lo siguiente :
1 2 3 |
$ ./array_params.sh Elementos: a be ce de Elementos: uno dos tres cuatro |
De todas maneras, en ninguno de los casos le pasas el array como parametro. En el primer SCRIPT, desempaquetas el array enfrente de tu función, y le pasas los elementos separados por un espacio; en el segundo SCRIPT, le pasas el nombre de la variable; ya adentro, el nombre se expande y se le referencia a esa otra variable externa para que pueda ser manipulada indirectamente.