在unix中使用变量作为变量名的一部分

Vis*_*ava 5 unix shell

我想将变量命名为a_${v}.

例如:v可以是2013 2014

我现在声明一个变量 a_${v}

a_${v}=hI # a_2013 should be Hi

v=2014
Run Code Online (Sandbox Code Playgroud)

所以a_${v}=Hello # a_2014应该是你好

我尝试使用eval命令,虽然它在分配值时没有抛出错误,但我无法提取变量名的值

$ v=2013

$ eval a_${v}=Hi


$ v=2014

$ eval a_${v}=Hello

echo ${a_${v}}
Run Code Online (Sandbox Code Playgroud)

不管用.. :(

我正在使用bash,我不想更改变量名,即不想将值赋给另一个值

bob*_*bah 9

在 bash 中,您可以执行以下操作(注意最后一行中的感叹号语法):

#!/bin/bash

a_2014='hello 2014'
year=2014
varname=a_${year}
echo ${!varname}
Run Code Online (Sandbox Code Playgroud)