如何在Bash中进行取代基内的替换

如何在Bash中进行取代基内的替换,bash,shell,Bash,Shell,例如: X=TEST TEST_VAR=123 eval echo ${${X}_VAR} 这会产生以下错误: ${${X}_VAR}: bad substitution 我如何才能实现我想要做的事?只要避开美元符号: eval echo \$${X}_VAR 或者使用nameref(使用declare-n创建)避免eval,例如 示例使用/输出 $ ./myscript 123 $ ./myscript 123

例如:

X=TEST
TEST_VAR=123

eval echo ${${X}_VAR}
这会产生以下错误:

${${X}_VAR}: bad substitution

我如何才能实现我想要做的事?

只要避开美元符号:

eval echo \$${X}_VAR

或者使用
nameref
(使用
declare-n创建)避免
eval
,例如

示例使用/输出

$ ./myscript
123
$ ./myscript
123