我不小心在我的一个脚本中写了下一个作业:
$X=$(echo 'astring')
失败的=astring: command not found
。
正确和预期的分配是X=$(echo 'astring')
,其工作和设置X='astring'
。
问题是第一个会发生什么? $
试图执行右侧的结果吗?如果是这样那么为什么它还包含=
呢?我很困惑。
答案 0 :(得分:1)
$X=$(echo 'astring')
的行为取决于$X
的内容。当它为空(可能是它)时,它会扩展为空字符串,剩下的字符串被解释为命令
$X=$(echo 'astring')
=astring
如果$X
包含某些内容,例如“astring”,字符串扩展为
astring=astring
但由于扩展的顺序,它没有按照人们的想法设置$astring
变量。在任何扩展发生之前识别分配。所以,它再次被解释为一个命令
astring=astring: command not found