bash 命令替换的变量评估
bash variable evaluation on command substitution
下面是一段bash代码
2 bar=false
3 foo=$(echo $bar);
4 echo $foo
5
6 echo change bar from false to true
7
8 bar=true
9 echo $foo
下面是输出
false
change a from false to true
false
我期待第 9 行 echo 命令会重新执行命令替换并输出 true。然而事实并非如此。第二个 $foo 将直接引用 "foo" 值,即文字 "false",而不是再次执行命令。嗯,这样设计也是合理的。我猜对了吗?有没有关于这种行为的幕后机制
foo=$(echo $bar);
是一个赋值,而不是当您稍后更改 bar
的值时重新计算的函数。
foo
只是在这里用命令替换的输出设置,值为 false
.
下面是一段bash代码
2 bar=false
3 foo=$(echo $bar);
4 echo $foo
5
6 echo change bar from false to true
7
8 bar=true
9 echo $foo
下面是输出
false
change a from false to true
false
我期待第 9 行 echo 命令会重新执行命令替换并输出 true。然而事实并非如此。第二个 $foo 将直接引用 "foo" 值,即文字 "false",而不是再次执行命令。嗯,这样设计也是合理的。我猜对了吗?有没有关于这种行为的幕后机制
foo=$(echo $bar);
是一个赋值,而不是当您稍后更改 bar
的值时重新计算的函数。
foo
只是在这里用命令替换的输出设置,值为 false
.