Parece que você espera que o shell gere algum tipo de variável de matriz anônima - AFAIK que não é possível em bash
.
A abordagem simples é passar argumentos individuais (que podem conter espaços em branco, se citados corretamente) e, em seguida, referir-se a eles com "$@"
myfunc ()
{
group=("$@");
for i in "${group[@]}"
do
printf "%s\n" "$i"
done
}
depois, por exemplo
$ myfunc "one nine" "two" "three four five"
one nine
two
three four five
embora neste caso em particular eu não veja nenhum benefício da variável array adicional - você pode também fazer um loop sobre "$@"
diretamente:
myfunc ()
{
for i in "$@"
do
printf "%s\n" "$i"
done
}
Se você quer apenas que "pareça uma matriz" no contexto de chamada, a única maneira que posso pensar em fazer isso seria passá-la como string myfunc '("one nine" "two" "three four five")'
e, em seguida, eval
da atribuição dentro de sua função eval group="$1"
, mas eu não recomendo fazer isso.