Bash 评估但不执行环境变量

Bash 评估但不执行环境变量,bash,shell,Bash,Shell,假设我有一个env变量: export foo="bar"; declare z="\$foo"; 我想重复“$z”的值,它应该是“bar”。但如果我跑步: echo "$z" 我明白这一点: $foo 如果我运行这个: echo "$(eval "$z")" 我得到的条不是命令 但相反,我只是希望 "bar" 作为回应的结果。 我该怎么做呢?听起来你想要的是间接扩张。请参阅(我已更新了链接,以便更直接地指向FAQ中与您的问题主题相关的部分,如果您之前遵循了它);bar=baz,则e

假设我有一个env变量:

export foo="bar";
declare z="\$foo";
我想重复“$z”的值,它应该是“bar”。但如果我跑步:

 echo "$z"
我明白这一点:

$foo
如果我运行这个:

echo "$(eval "$z")"
我得到的
条不是命令

但相反,我只是希望

"bar"
作为回应的结果。
我该怎么做呢?

听起来你想要的是间接扩张。请参阅(我已更新了链接,以便更直接地指向FAQ中与您的问题主题相关的部分,如果您之前遵循了它);bar=baz,则
echo“$foo”
将发出
bar
,但
echo“${!foo}”
将发出
baz
。请注意,您需要将
lmx\u设置\u a
而不是
$lmx\u设置\u a
放入变量中;
$
是一个信号,它告诉shell进行参数扩展,而不是变量名本身的一部分。已经作为dupe关闭了——因此这个问题可以作为以前实例的指南;当这些答案已经存在于之前的副本中时,它不需要有自己的答案。