命令替换的bash变量评估

时间:2016-12-18 17:38:54

标签: bash command

下面是一段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”,而不是再次执行命令。嗯,这样设计是合理的。我猜对了吗?是否存在关于此行为的幕后机制

1 个答案:

答案 0 :(得分:2)

foo=$(echo $bar);是一个分配,而不是在您稍后更改bar的值时重新评估的功能。

foo只是在这里设置了命令替换的输出,值为false