为什么在左侧arg上扩展会导致错误

时间:2017-10-04 08:27:55

标签: bash

我不小心在我的一个脚本中写了下一个作业: $X=$(echo 'astring') 失败的=astring: command not found。 正确和预期的分配是X=$(echo 'astring'),其工作和设置X='astring'。 问题是第一个会发生什么? $试图执行右侧的结果吗?如果是这样那么为什么它还包含=呢?我很困惑。

1 个答案:

答案 0 :(得分:1)

$X=$(echo 'astring')的行为取决于$X的内容。当它为空(可能是它)时,它会扩展为空字符串,剩下的字符串被解释为命令

$X=$(echo 'astring')
  =astring

如果$X包含某些内容,例如“astring”,字符串扩展为

astring=astring

但由于扩展的顺序,它没有按照人们的想法设置$astring变量。在任何扩展发生之前识别分配。所以,它再次被解释为一个命令

astring=astring: command not found