最好的方法是传递位置参数。没有其他的。您可以作为字符串传递,但是这种方式可能会引起一些麻烦。例:
array=(one two three four five)
function show_passed_array(){
echo $@
}
要么
function show_passed_array(){
while $# -gt 0;do
echo $1;shift
done
}
show_passed_array ${array[@]}
输出:
one two three four five
您的意思是,如果数组值具有空格符号,则必须在使用函数$ 1 $ 2 $ 3 ...位置参数通过索引访问值之前,先引用元素。其中索引0-> 1,1,1-> 2,...要迭代访问,最好始终使用$ 1并在Shift之后使用。无需任何其他操作。您可以传递没有这样的数组的参数:
show_passed_array one two three four five
bash媒体会根据传递的参数自动构建一个数组,并将其传递给函数,然后您将获得位置参数。此外,当您编写$ {array [2]}时,您实际上会写出随后的参数一二三四,并将它们传递给函数。因此,这些调用是等效的。