考虑我有一个非常大的数组$large_list
,有没有办法编写一个将数组作为参数的函数?例如:
echo_idx_array () {
arr="$1"
idx="$2"
echo "${arr[$idx]}"
}
做这样的事情的通常策略是什么?我试着给变量,$large_list
但它是空的。
我愿意修改该函数以使其适应参数列表中的任何更改。
作为记录,我正在使用ksh88,并且正在寻找尽可能便携的答案。
编辑:到目前为止,我能想到的最好的办法是遍历数组并将每个元素作为参数发送给函数。这看起来非常丑陋且容易出错,更不用说它一定会很快达到某个极限。这是我所做的:
foo () {
echo $*
}
cmd="foo "
while [[ $i -lt $MAX_ARR_SIZE ]]; do
cmd="$cmd ${large_list[$i]}"
((i=i+1))
done
eval $cmd
有没有更好的事情要做?
我尝试了您建议的语法,但没有用:(
—
rahmu 2012年
我感到疲倦和困惑。我试过了
—
rahmu 2012年
"${array[$@]}
。您的建议确实有效。Mea culpa。
func "${array[@]}"
?如果只需要传递一个元素,则只需传递该元素-无需通过传递数组和索引来使其更加复杂。