Basta fazer uma função usando myfunction() ( ... )
em vez de myfunction() { ... }
(assim será executado em um subshell) e passar sua matriz como argumentos de função.
myfunc() (
for f in "$@"; do
printf '%s\n' "$f"
done
)
myfunc these arguments "are passed" 'to myfunc'
myarray=( "These values" "are set as" part 'of an array' )
myfunc "${myarray[@]}"
A saída parece:
these
arguments
are passed
to myfunc
These values
are set as
part
of an array
Nota: Essa é apenas uma função de exemplo, mas na verdade, aqui está uma versão mais simples que faz a mesma coisa:
myfunc_simpler() (
printf '%s\n' "$@"
)