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
export
eval
可以在危险较小的方式之后以这种方式工作- 但如果必须的话,稍后可以取消导出它们。并且$((
算术=赋值))
会影响当前 shell 中的当前命令,因此如果值为数字,则对于立即变量赋值来说仍然会更安全。
还有 shell 的.dot
and<<HEREDOCS
用于两次评估变量赋值:
var1=var2 ; . <<HEREDOC /dev/stdin
$var1=val
HEREDOC
echo $var2
val