如何使用一个变量的名称来引用另一个变量?

如何使用一个变量的名称来引用另一个变量?
a=2
pt2=3
echo $a
2
echo $pt2
3

我该如何使用

echo $pt($a)

打印pt2?的内容

另一种选择是

b=pt$a
echo $b
pt2
echo $[$b]
3

答案1

a=2
pt2=3
eval "echo \"\${pt$a}\""

3

或者:

b=pt$a
eval "echo \"\${$b}\""

3

还有其他方法:

a=2
pt2=3
export "pt$a=$((pt$a + $(echo pt$a)))"
echo $((pt$a))

6

exporteval可以在危险较小的方式之后以这种方式工作- 但如果必须的话,稍后可以取消导出它们。并且$((算术=赋值))会影响当前 shell 中的当前命令,因此如果值为数字,则对于立即变量赋值来说仍然会更安全。

还有 shell 的.dotand<<HEREDOCS用于两次评估变量赋值:

var1=var2 ; . <<HEREDOC /dev/stdin
    $var1=val
HEREDOC

echo $var2

val

相关内容