我试图找出 env(即使用新环境调用 util)。
举个例子,我当前环境中的环境变量KDEDIRS =/usr,假设我输入:
env -i KDEDIRS=/home/newkdedir env
这将按预期输出 KDEDIRS=/home/newkdedir。 (即使用新环境调用第二个环境)
现在我想以同样的方式调用 say 实用程序 echo
env -i KDEDIRS=/home/new_kdedir echo ${KDEDIRS}
这显然行不通,因为。 shell 在回显之前扩展 KDEDIRS。所以输出是/usr (即当前环境中的值)
然后我尝试间接并输入
env -i KDEDIRS=/home/newkdedir echo ${!KDEDIRS}
这不会输出任何内容。
我可能对此有点困惑,但是我如何让 shell 根据新创建的 echo 环境扩展 KDEDIRS 变量?
最佳答案
扩展发生在构建 env 命令行的过程中,该命令行也设置了变量。 在该命令的执行过程中不会进行任何扩展。因此,您必须添加另一个命令行扩展器作为该命令的一部分。例如
env -i KDEDIRS=/home/newkdedir /bin/sh -c 'echo $KDEDIRS'
KDEDIRS=/home/newkdedir eval 'echo $KDEDIRS'
间接与此无关。
关于linux - Shell 变量扩展 - 使用 env 调用实用程序时的间接寻址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2034432/