Bash:在同一行上赋值变量,不改变echo行为

Bash:在同一行上赋值变量,不改变echo行为,bash,Bash,有人能解释一下为什么有人会在第二行使用上面的代码吗。 a=3将被忽略,因为后面没有“回车”。 但是我在上面的脚本中看到了它,并且不确定它的用途。在设置环境之前,父进程会展开a,在该环境中为a设置不同的值(3)。尽管echo执行变量a设置为3,但该值已经扩展。所以太晚了 您可以改为: a=2 a=3 echo $a #prints 2 $a在计算a=3之前由shell(Bash)展开。所以echo将其参数视为2,这就是它打印的内容。(如果您设置-x,您可以看到执行的是a=3 echo 2

有人能解释一下为什么有人会在第二行使用上面的代码吗。 a=3将被忽略,因为后面没有“回车”。
但是我在上面的脚本中看到了它,并且不确定它的用途。

在设置环境之前,父进程会展开
a
,在该环境中为
a
设置不同的值(3)。尽管
echo
执行变量
a
设置为
3
,但该值已经扩展。所以太晚了

您可以改为:

a=2
a=3 echo $a     #prints 2

$a
在计算
a=3
之前由shell(Bash)展开。所以
echo
将其参数视为
2
,这就是它打印的内容。(如果您
设置-x
,您可以看到执行的是
a=3 echo 2

var=val命令
用于设置环境变量,使其在执行过程中被
命令
看到,而不是在其他地方。因此,当
命令
读取环境变量(例如使用)时,
$var
就是
val


如果
echo
在运行时查找
$a
,则在计算
a=3
之前,它的值
3

$a
将展开。通常,
var=val命令
用于设置环境变量,使其在执行过程中被
命令
看到,而不是在其他地方。在这种情况下,
$a
将在
echo
3
,但其参数仍然是
2
。可能是因为有人想测试你的结论。@Biffen-现场。你应该回答这个问题。@Biffen谢谢你的解释。即使它起作用了,我也无法想象你会希望
a=$value echo$a
超过
echo$value
a=3 bash -c 'echo $a'