下面是一段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”,而不是再次执行命令。嗯,这样设计是合理的。我猜对了吗?是否存在关于此行为的幕后机制
答案 0 :(得分:2)
foo=$(echo $bar);
是一个分配,而不是在您稍后更改bar
的值时重新评估的功能。
foo
只是在这里设置了命令替换的输出,值为false
。