我需要动态创建变量名,如下所示(简化示例):
#!/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内容正确。
感谢这个网站(可能其他人也有类似的答案......):
#!/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内容。
| 归档时间: |
|
| 查看次数: |
3664 次 |
| 最近记录: |