我正在尝试扩展通过间接扩展获得的数组中的所有值:
> 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
笔记
my_array
可能包含带空格的值!
编辑
在我正在编写的函数中,my_array_name 是通过 "$1" 设置的,所以我不能从字面上使用它。
类似于:https ://unix.stackexchange.com/questions/20171/indirect-return-of-all-elements-in-an-array但我需要避免使用eval
以防止脚本在环境在正确的时间被“黑客”了......