动态创建bash变量并访问其先前定义的值

时间:2014-11-14 18:51:52

标签: linux bash shell scripting sh

我正在尝试读取之前定义的bash变量的值,但此变量名称是动态派生的。

这是我正在尝试的bash脚本

  $ mythreshold=10
  $ table=my
  $ threshold="$table"threshold
  $ echo $("$threshold")
   mythreshold

但是当我尝试读取像

这样的变量值时
    $ echo $("$threshold")
    -bash: mythreshold: command not found

然而我期待它打印

  $ echo $("$threshold")
   10

有没有办法可以得到这个工作,它应该打印上面定义的mythreshold变量的值

2 个答案:

答案 0 :(得分:5)

$()是命令替换。它在内部运行命令并返回输出。变量名称不是命令。

您可以$(echo "$threshold"),但这样只能获得mythreshold

您需要indirection来获得所需内容。具体来说是Evaluating indirect/reference variables

例如,针对这种特殊情况:

echo "${!threshold}"

答案 1 :(得分:-1)

使用eval命令:

eval echo \${$threshold}

有关此命令的更多详细信息,请访问:

eval command in Bash and its typical uses