Bash:将数组动态分配给新变量

Bash:将数组动态分配给新变量,bash,Bash,我有两个数组,我想根据用户输入动态分配给变量 ARRAY_ONE=('one' 'two') ARRAY_TWO=('three' 'four') 假设$opt可以是ONE或TWO,具体取决于用户输入。我有一个变量ARRAY\u THREE,我想分配给ARRAY\u ONE或ARRAY\u TWO的内容,具体取决于$opt的值 以下代码段不起作用,因为它只接受指定数组第一个位置的元素: TEMP=ARRAY_$opt ARRAY_THREE=${!TEMP} echo $ARRAY_THREE

我有两个数组,我想根据用户输入动态分配给变量

ARRAY_ONE=('one' 'two')
ARRAY_TWO=('three' 'four')
假设
$opt
可以是
ONE
TWO
,具体取决于用户输入。我有一个变量
ARRAY\u THREE
,我想分配给
ARRAY\u ONE
ARRAY\u TWO
的内容,具体取决于
$opt
的值

以下代码段不起作用,因为它只接受指定数组第一个位置的元素:

TEMP=ARRAY_$opt
ARRAY_THREE=${!TEMP}
echo $ARRAY_THREE     # 'one'
将代码更改为:

TEMP=ARRAY_$opt[@]
ARRAY_THREE=(${!TEMP})
echo ${ARRAY_THREE[@]}
输出: 编辑:


现场演示:这是我的解决方案,它不使用临时变量:

#!/bin/bash

foo_1=(fff ddd) ;
foo_2=(ggg ccc) ;

for i in 1 2 ;
do
    eval mine=( \${foo_$i[@]} ) ;
    echo ${mine[@]} ;
done ;

@佩雷尔:请检查链接的演示。@佩雷尔:编辑演示以添加
echo${ARRAY\u THREE[0]}
echo${ARRAY\u THREE[1]}
效果很好。谢谢
three four
#!/bin/bash

foo_1=(fff ddd) ;
foo_2=(ggg ccc) ;

for i in 1 2 ;
do
    eval mine=( \${foo_$i[@]} ) ;
    echo ${mine[@]} ;
done ;