Использование переменной для хранения имени массива Bash - PullRequest
0 голосов
/ 11 мая 2018

website_array_ $ w - это w числовых массивов, созданных с помощью данного аргумента в командной строке.Я пытаюсь создать новый массив temp и каждый раз сохранять в нем определенный website_array_ $ w.Это не похоже на работу, и я получаю:

temp=${website_array_$w[*]}: bad substitution

Что я делаю не так?После этого я хочу создать новый массив random_temp, который содержит $ f случайных значений массива temp.

for ((w=0; w<"$3"; w++)) do
    eval echo 'temp=${website_array_$w[*]}'
    for ((p=0; p<"$4"; p++)) do
         for((i=0; i<"$f"; i++)) do
            eval "random_temp=${temp[$RANDOM % ${#temp[@]}]}"
         done
    done
done

1 Ответ

0 голосов
/ 11 мая 2018

Использовать nameref (работает с Bash версий 4.3 и выше):

declare -n temp=website_array_$w || { echo "ERROR: Need bash 4.3 or newer" >&2; exit 1; }

А затем используйте его:

random_temp=${temp[$RANDOM % ${#temp[@]}]}

См:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...