从循环中修改全局变量

时间:2018-05-08 11:05:16

标签: linux bash

为什么我

/tmp/test: line 4: 0=Done: command not found

从下面

a="0"

while [ true ]; do
  $a="Done"
  exit
done

echo $a

我原以为它会输出Done

1 个答案:

答案 0 :(得分:3)

定义变量时,只有在您访问变量时,才需要使用$

您需要将定义变量a的行更改为:

a="Done"

至于解释,我认为这里发生的事情是$a正在被解析为0,然后shell将整个0=Done视为单个(未完成)命令。访问未定义的变量仍会返回0退出代码。