动态构建 shell 变量

JSc*_*Ced 3 linux shell

我需要动态创建变量名,如下所示(简化示例):

#!/bin/sh

IDX=1
SERIES1="a b c d e f g"
SERIES2="h i j k l m n"

# How to get this value contains $SERIES1 or $SERIES2
# depending on the value of $IDX
CURRENT=${SERIES\${IDX}} # doesn't work, just an example
Run Code Online (Sandbox Code Playgroud)

如果IDX=1我期望有

echo $CURRENT
Run Code Online (Sandbox Code Playgroud)

显示

a b c d e f g
Run Code Online (Sandbox Code Playgroud)

如果IDX=2要显示

h i j k l m n
Run Code Online (Sandbox Code Playgroud)

我需要在循环中使用它来处理来自另一个脚本的不确定数量的 SERIES。

编辑 目前使用shshell,但如果需要,我可以使用不同的 shell(即使这意味着我可能需要转换一些东西,但没关系)

我的问题是:如何将所需的系列分配给CURRENT

我尝试了什么?上面的例子(不起作用)和其他风格,例如:

CURRENT=$${SERIES$${IDX}}
CURRENT=${SERIES${IDX}}
Run Code Online (Sandbox Code Playgroud)

编辑2

我正在去某件事的路上:

eval echo $`echo "SERIES$IDX"`
Run Code Online (Sandbox Code Playgroud)

这将显示正确的系列。但是我找不到将其分配给的方法CURRENT

CURRENT=eval echo $`echo "SERIES$IDX"`
Run Code Online (Sandbox Code Playgroud)

但我想更多的挖掘,我会找到一些东西。任何帮助表示赞赏

编辑3

好的,我找到

eval "CURRENT=\$SERIES$IDX"
echo $CURRENT
Run Code Online (Sandbox Code Playgroud)

显示我所期望的内容,因此CURRENT内容正确。

JSc*_*Ced 5

感谢这个网站(可能其他人也有类似的答案......):

#!/bin/sh

IDX=1
SERIES1="a b c d e f g"
SERIES2="h i j k l m n"

eval "CURRENT=\$SERIES$IDX"
Run Code Online (Sandbox Code Playgroud)

现在CURRENT保存 的内容SERIES1。如果我更改IDX为 2 那么我会得到SERIES2内容。