回答:
あなたはシェルが何らかの匿名配列変数を生成することを期待しているようです-でそれは不可能ですbash
。
簡単なアプローチは、個々の引数(適切に引用符で囲まれている場合は空白を含む場合があります)を渡し、次にそれらを参照することです "$@"
myfunc ()
{
group=("$@");
for i in "${group[@]}"
do
printf "%s\n" "$i"
done
}
次に
$ myfunc "one nine" "two" "three four five"
one nine
two
three four five
この特定のケースでは、追加の配列変数の利点は見られません- "$@"
直接ループオーバーすることもできます:
myfunc ()
{
for i in "$@"
do
printf "%s\n" "$i"
done
}
あなたはちょうどそれが呼び出し元のコンテキストで「アレイのように見える」にしたい場合は、その後、私はそれを行うために考えることができる唯一の方法は、としてそれを渡すことであろう文字列などmyfunc '("one nine" "two" "three four five")'
して、eval
あなたの関数内で割り当てeval group="$1"
が、私はないないことをやってお勧めします。