私が非常に大きな配列を持っていると考えてください$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
"${array[$@]}
。あなたの提案は実際に機能します。Mea culpa。
func "${array[@]}"
か?1つの要素のみを渡す必要がある場合は、その要素を渡します。配列とインデックスを渡して複雑にする必要はありません。