Unix:为什么 env A=42 echo ${A} 不起作用?



env手册页说它将设置指定的环境变量,然后运行指定的命令。知道这一点,我期待

env A=42 echo ${A}

打印42,但它不显示任何内容。我做错了什么?

参数扩展发生在 shell 运行命令之前。因此,如果A当前具有值 3,则命令行首先计算为

env A=42 echo 3

然后外壳确定要运行的命令(env)。此时,env构造一个新环境,其中 A 的值为 42,然后在该环境中运行命令echo 3

这是因为在执行echo之前会评估${A}。这意味着 echo 在以前的环境中获得一个值为 A 的参数(没有值...

一种解决方案是将参数作为文字字符串(单引号)传递,以便在稍后阶段与echo一起扩展:

user@host:~$ env A=42 bash -c 'echo ${A}'
42

相关内容

  • 没有找到相关文章

最新更新