我们想要回显一个 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