4
间接返回数组中的所有元素
Bash手册页描述了使用${!a}来返回变量名称的内容,该变量的名称是内容的名称a(间接级别)。 我想知道如何使用此方法返回数组中的所有元素,即 a=(one two three) echo ${a[*]} 退货 one two three 我想要: b=a echo ${!b[*]} 返回相同的。不幸的是,它不是,而是返回0。 更新资料 有了这些答复,我现在意识到我的示例太简单了,因为类似这样: b=("${a[@]}") 完全可以实现我所说的需求。 所以,这就是我想要做的: LIST_lys=(lys1 lys2) LIST_diaspar=(diaspar1 diaspar2) whichone=$1 # 'lys' or 'diaspar' _LIST=LIST_$whichone LIST=${!_LIST[*]} 当然,仔细阅读Bash手册页会发现这并不符合预期,因为最后一行只是返回“数组”的索引$_LIST(根本不是数组)。 在任何情况下,都应执行以下操作(如前所述): LIST=($(eval echo \${$_LIST[*]})) 或...(最终我走的路线): LIST_lys="lys1 lys2" ... LIST=(${!_LIST}) 当然,假设元素不包含空格。