Essa é uma string, não uma matriz real. Mas sim, você pode passar uma string com espaços para uma função, como o primeiro argumento ou como qualquer outro.
set -f
f() {
IFS=' '
for x in $2; do echo "> $x"; done
}
liststr="foo bar ccc"
f something "$liststr" somethingelse
Lembre-se de que, se você usar uma expansão sem aspas para dividir a string, as palavras resultantes também passarão por globbing, o que pode ou não ser o que você deseja. Você pode desativar globbing (globalmente) com set -f
, como acima.
Mas desde que você marcou isso com o Bash, você provavelmente deve usar uma matriz adequada e passar o nome da matriz para usar com uma variável nameref ou apenas dividir a matriz para separar os argumentos ao chamar a função.
Veja: