如何从所有参数中选择数组?

时间:2018-03-05 19:12:26

标签: arrays bash shell scripting

给定数组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"中发送数组,但是,如何从所有参数中选择数组]

1 个答案:

答案 0 :(得分:1)

$@ all 传递给函数的参数。 检索最后一个参数很简单。只需使用最后一个数组条目。 之后你必须删除数组中的最后一个条目。

function func {
    local arr=("$@")
    local str="${arr[-1]}"
    unset 'arr[-1]'
}

确保始终使用至少一个参数调用func,否则脚本将失败。