给定数组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"中发送数组,但是,如何从所有参数中选择数组]
答案 0 :(得分:1)
$@
all 传递给函数的参数。
检索最后一个参数很简单。只需使用最后一个数组条目。
之后你必须删除数组中的最后一个条目。
function func {
local arr=("$@")
local str="${arr[-1]}"
unset 'arr[-1]'
}
确保始终使用至少一个参数调用func
,否则脚本将失败。