Расширение массива Bash с использованием расширения косвенной косвенности
Я пытаюсь расширить все значения в массиве, к которому я попадаю через косвенное расширение:
> my_array=(coconut banana)
> echo "${my_array[@]}"
coconut banana
> my_array_name=my_array
> echo ${!my_array_name}
coconut
> echo "${!my_array_name[@]}"
0
Я ошибочно использую «Список ключей массива» в последней команде, потому что я не знаю, как набрать правильную команду?
Я хотел бы получить:
coconut banana
возможно, не прибегая к некоторым уродливымeval
взломать .. Пример одного отстойного взлома:
> echo \${$my_array_name[@]}
${my_array[@]}
> eval echo \${$my_array_name[@]}
coconut banana
Note
my_array
может содержать значения с пробелами!
В функции, которую я пишу, my_array_name устанавливается через & quot; $ 1 & quot; поэтому я не могу использовать это буквально.
Похожий на:https://unix.stackexchange.com/questions/20171/indirect-return-of-all-elements-in-an-array но мне нужно избегать использованияeval
для защиты от неприятных эффектов, которые мог бы иметь сценарий, если среда была "взломана";just at the right time...