我不确定在执行变量赋值时,简单地使用命令替换会返回什么错误代码:
a=$(false); echo $?
它输出1
,这让我想到变量赋值不会在最后一个错误代码上进行清除或生成新的错误代码。但是当我尝试了以下内容时:
false; a=""; echo $?
显然,这就是a =“”
的返回值,覆盖了false
返回的1
,因此它输出0
。
我想知道为什么会发生这种情况,变量分配是否有任何与其他正常命令不同的特殊性?还是仅因为a = $(false)
被认为是单个命令,并且只有命令替换部分有意义?
-- 更新 --
感谢大家的回答和评论,我得到了这一点:“当您使用命令替换分配变量时,退出状态是该命令的状态。”(来自@Barmar),这个解释非常清晰易懂,但对于程序员来说并不够准确,我想看到来自TLDP或GNU man页面等权威来源的这一点的参考资料,请帮助我找出来,再次感谢!