Я пытаюсь изменить массив, который я передал в качестве параметра функции. До сих пор у меня есть пустой массив вне функции:Изменить параметр функции массива Bash
buckets=()
Тогда у меня есть функция, которая принимает 2 аргумента. Первый аргумент - пустой массив, который я хочу заполнить. Второй аргумент - это имя файла, который содержит данные, которые я хочу использовать для заполнения массива.
До сих пор я создал временный массив. Затем заполните временный массив содержимым файла. Это, как я могу это сделать:
fillarray()
{
# Declare the paramater as a temporary array
declare -a tempArray=("${!1}")
# Fill it up
while IFS= read -r entry; do
tempArray+=("$entry")
done < <(jq -r '.data | .[].name' $2)
Заключительный шаг, чтобы установить массив параметров (ака ковши), чтобы быть содержимое временного массива, который мы только что завалил. Любые предложения о том, как это сделать?
если ваш tempArray имеет то, что вам нужно, а затем скопировать его в массив ведер будет легко, как: Unix = ('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux'); Linux = ("$ {Unix [@]}"); echo $ {Linux [@]}; См. Это для дополнительных операций: http://www.thegeekstuff.com/2010/06/bash-array-tutorial/ --- ИЛИ см. Это, чтобы скопировать массив в другой http://stackoverflow.com/questions/19417015/bash -copy-from-one-array-to-another –
@ArunSangal Пример, который вы даете работам, если у меня есть и знаю имена переменных. Моя проблема связана с общими параметрами внутри функции, которые изменяют переменную вне функции. Я пытаюсь реорганизовать свой код, поэтому мне не нужно повторять сам. Вот почему я пытаюсь захватить этот fillarray как функцию и передать массив, который я хочу заполнить. Спасибо за учебники. Я прочту их, чтобы они стали более знакомы с bash. – honestemu3