给定数组arr
和字符串str
。如果我以下一个方式发送它们:
func "${arr[@]}" ${str}
如何在func
函数中定义数组和字符串?
function func {
local arr=....
local str=....
}
根据我的理解(这是正确的?)如果我愿意:local arr=("$@")
我会得到:
arr[0]=the first argument - in this case it's will be all the array
arr[1]=str
(根据我的检查local arr=("$@")
给出的数组与arr(我发送的内容)完全相同,除此之外还添加了str
作为此数组中的最后一个元素..)
[我不要求“如何在bash中发送数组”,但是,如何从所有参数中选择数组]
$@
是传递给函数的所有参数。检索最后一个参数很简单。只需使用最后一个数组条目。之后,您必须从阵列中删除最后一个条目。
function func {
local arr=("$@")
local str="${arr[-1]}"
unset 'arr[-1]'
}
确保始终使用至少一个参数调用func
,否则脚本将失败。