如何回显另一个字符串 shell 变量的字符串

如何回显另一个字符串 shell 变量的字符串

我们想要回显一个 shell 变量的值,该变量名中包含另一个变量字符串。例如:

我们想要以下输出

var1=1
var2=2

我们尝试了几种类似于下面的形式,但它们不起作用

for j in {1..2}
do
   export var${j}=$j
   echo "var${j}=${var${j}}"
done 

我们如何设置和回显名称中包含变量字符串的 shell 变量?

谢谢

答案1

在 bash (或 ksh) 中,可以使用间接语法${!var}来引用名称为 的值的变量$var。它必须是完整的名称,因此您必须像这样执行:

for j in {1..2}; do
   # This could have been declare instead of export if you don't need
   # to export the variable.
   export var${j}=$j
   varname=var$j
   echo "var${j}=${!varname}"
done

答案2

按照@rici 的解释去做,但这很少是一个好主意。如果你使用数组,你可以用更简单的语法实现同样的效果:

var=("1" "2");
for j in {0..1}
do
    echo "var$j : ${var[$j]}"
done

相关内容