从Bash中数组中列出的变量名获取变量值

从Bash中数组中列出的变量名获取变量值,bash,Bash,我试图打印Bash数组中列出的多个变量的值,如下面的最小代码示例所示 #!/bin/bash VAR1="/path/to/source/root" VAR2="/path/to/target/root" VAR3="50" VARS=("VAR1" "VAR2" "VAR3") for var in ${VARS[*]}; do echo "value of $var is ${$var}" done 这给了我一个错误 line 8: value of $var is ${$var

我试图打印Bash数组中列出的多个变量的值,如下面的最小代码示例所示

#!/bin/bash
VAR1="/path/to/source/root"
VAR2="/path/to/target/root"
VAR3="50"

VARS=("VAR1" "VAR2" "VAR3")
for var in ${VARS[*]}; do
    echo "value of $var is ${$var}"
done
这给了我一个错误

line 8: value of $var is ${$var}: bad substitution
我想要以下输出:

value of VAR1 is /path/to/source/root
value of VAR2 is /path/to/target/root
value of VAR3 is 50
value of VAR1 is /path/to/source/root
value of VAR2 is /path/to/target/root
value of VAR3 is 50

我在谷歌上的搜索结果不是很好。由于间接性(即,
var
迭代一个数组,该数组包含我想要其值的变量名称),我无法准确地对搜索进行命名。但我们非常感谢您的帮助。

使用间接引用:

#!/bin/bash
VAR1="/path/to/source/root"
VAR2="/path/to/target/root"
VAR3="50"

VARS=("VAR1" "VAR2" "VAR3")
for var in ${VARS[*]}; do
    echo "value of $var is ${!var}"
done
输出: