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

Bash Unix:为什么env A=42 echo${A}不起作用?,bash,echo,env,Bash,Echo,Env,env手册页说它将设置指定的环境变量,然后运行指定的命令。知道这一点,我希望 env A=42 echo ${A} 打印42,但它没有显示任何内容。我做错了什么?参数展开发生在shell运行命令之前。因此,如果A当前的值为3,则命令行首先计算为 env A=42 echo 3 然后shell确定要在env中运行的命令。此时,env构建了一个新环境,其中a的值为42,然后在该环境中运行命令echo 3。在shell运行命令之前,会进行参数扩展。因此,如果A当前的值为3,则命令行首先计算为 en

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

env A=42 echo ${A}

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

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

env A=42 echo 3

然后shell确定要在env中运行的命令。此时,env构建了一个新环境,其中a的值为42,然后在该环境中运行命令echo 3。

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

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

这是因为${a}在执行echo之前进行了计算。这意味着echo在前一个环境中获取一个参数,该参数的值为A,无值

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

这是因为${A}是在执行echo之前计算的。这意味着echo在前一个环境中获取一个参数,该参数的值为A,无值

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


可能是因为${A}是在echo实际运行之前计算的。是的,这就是原因。谢谢可能是因为${A}是在echo实际运行之前计算的。是的,这就是原因。谢谢另一种解决方案:env E=42 printenvE@M.Dogru谢谢,我不知道printenv不是专家。更多信息:另一种解决方案:env E=42 printenvE@M.Dogru谢谢,我不知道printenv不是专家。详情如下: