在 echo 之前展开变量内的变量

Expand a variable within variable right before echo

示例:

testing="test"
var="\"${testing} the variable\""
testing="Update"

echo "$var"

输出: 测试变量

需要输出: 更新变量

变量在使用字符串时被扩展,它们不是记住变量替换的模板。

如果需要这样做,需要将变量按字面意思放入字符串中,使用eval.

testing="test"
var='"${testing} the variable"'
testing="Update"

eval "echo $var"

但是 eval 是危险的——它会执行字符串中的任何 shell 命令。更好的解决方案可能是使用某种占位符字符串并使用 shell 扩展运算符替换它。

var='#testing# the variable'
testing="Update"

echo "${var//#testing#/$testing}"