为什么在Bash中“ A = 3; A = 4 echo $ A”会产生3(而不是4)?

zel*_*ell 4 linux bash

如果我理解正确,语法

Var=<something> command 
Run Code Online (Sandbox Code Playgroud)

将Var设置为“ something”后,应运行命令。那为什么"A=3; A=4 echo $A"我的bash 会产生3?

Shl*_*oim 7

bash中的变量是在执行开始之前而不是执行期间进行评估的,因此我们有一个命令的预处理阶段:

A=4 echo $A
Run Code Online (Sandbox Code Playgroud)

$AA在执行以下操作之前,将其计算为的当前值并将其替换为:

A=4 echo 3
Run Code Online (Sandbox Code Playgroud)

然后才执行,A将值更改为4,然后打印3。

  • 此外,`A = 3;A = 4 eval“ echo $ A”`(注意双引号)打印`3` (2认同)
  • 和`B = 3 echo $ B`打印 (2认同)