【发布时间】:2013-05-03 22:07:33
【问题描述】:
众所周知,在 bash 编程中传递参数的方式是 $1, ..., $N。但是,我发现将数组作为参数传递给接收多个参数的函数并不容易。这是一个例子:
f(){
x=($1)
y=$2
for i in "${x[@]}"
do
echo $i
done
....
}
a=("jfaldsj jflajds" "LAST")
b=NOEFLDJF
f "${a[@]}" $b
f "${a[*]}" $b
如上所述,函数f接收两个参数:第一个分配给x,它是一个数组,第二个分配给y。
f 可以通过两种方式调用。第一种方式使用"${a[@]}"作为第一个参数,结果是:
jfaldsj
jflajds
第二种方式使用"${a[*]}"作为第一个参数,结果是:
jfaldsj
jflajds
LAST
结果都不如我所愿。那么,有没有人知道如何在函数之间正确传递数组?
【问题讨论】:
-
@chepner 感谢您的提醒。稍后我会检查它以获取一些想法