通过函数无法显示数组的第n个元素

时间:2018-12-19 16:13:03

标签: arrays bash function return space

我正在寻找从包含空格的数组中检索第n个元素。 让我们举个例子:

ARRAY=("This is" "a test" "array")

我创建了以下功能:

ReturnElementFromId() {
    local result="${@[$1]}"
    echo result
}

echo `ReturnElementFromId 0 "${ARRAY[@]}"` 

该功能可能看起来没用,但是我需要它像这样工作。 它旨在返回给定数组的$ 1索引。

我在互联网上进行了一些研究,但未找到任何答案。 我知道我编写的代码(尤其是result="${@[$1]}")是错误的,因为

  

Victor Zamanian::@(和*)是“特殊参数”,因为它们无效   数组名称,$ {@}确实引用了编号的参数

不幸的是,result="${$1}无效,并尝试了我想到的几乎所有组合>。<” 有人有任何线索吗?

此致

1 个答案:

答案 0 :(得分:1)

我已更正您的代码。您需要记住,实际上,发送给函数的所有参数都是值数组。

#!/bin/bash


ARRAY=("This is" "a test" "array")

function ReturnElementFromId() {
    local ix="$1" && shift
    local arr=("$@")

    echo "${arr[$ix]}"
}

echo `ReturnElementFromId 0 "${ARRAY[@]}"`

希望有帮助!