Проблема с отображением n-го элемента массива через функцию - PullRequest
0 голосов
/ 19 декабря 2018

Я ищу для получения n-го элемента из массива, который содержит пробелы.Давайте возьмем для примера:

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

Я создал следующую функцию:

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

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

Функция может показаться бесполезной, но мне нужно, чтобы она работала так.Он был разработан, чтобы вернуть $ 1-й индекс данного массива.

Я провел некоторое исследование в Интернете и не нашел никаких ответов.Я знаю, что код, который я написал (особенно result="${@[$1]}"), неверен, потому что

Виктор Заманян: @ (и *) являются «особыми параметрами» и потому что они недопустимыИмена массивов, $ {@} ссылаются на пронумерованные параметры

К сожалению result="${$1} не работает и перепробовал почти все комбинации, о которых я мог подумать>. <"У кого-нибудь есть какие-нибудь подсказки? </p>

С уважением,

1 Ответ

0 голосов
/ 19 декабря 2018

Я исправил твой код.Вы должны иметь в виду, что фактически все параметры, которые вы отправляете в свою функцию, являются массивом значений.

#!/bin/bash


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

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

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

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

Надеюсь, это поможет!

...