Bash:在同一行上赋值变量,不改变echo行为
有人能解释一下为什么有人会在第二行使用上面的代码吗。 a=3将被忽略,因为后面没有“回车”。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
,在该环境中为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'