执行“sudo aptitude update && sudo aptitude upgrade”时,&& 连接符停止工作。为什么会发生这种情况?

执行“sudo aptitude update && sudo aptitude upgrade”时,&& 连接符停止工作。为什么会发生这种情况?

&& 连接符出现问题。它停止了连接。

我跑了:

sudo add-apt-repository ppa:igorgomes/ppa
sudo aptitude update

aptitude update命令开始生成屏幕输出错误(我不记得记录下来),从那时起序列就sudo aptitude update && sudo aptitude upgrade停止工作了。具体来说,第一个命令执行了,但第二个命令没有执行。

我可以通过删除文件夹“/etc/apt/sources.list.d”中的相应文件来修复它,这样命令aptitude update就可以再次正常工作,并且sudo aptitude update && sudo aptitude upgrade组合也可以再次正常工作。

问题已经解决,但我真的很好奇为什么会这样?这不是我第一次遇到连接符 && 停止工作,我从未发现其背后的逻辑是什么。有没有人遇到过这种情况,能找出原因吗?

先感谢您

普克拉斯

答案1

我在学习其他问题时刚刚得到了正确答案,所以我会自己回答。

&& 表示只有第一个命令成功执行后,第二个命令才会运行。如果第一个命令抛出错误(即退出 1),则连接器不会将操作传递给序列中的下一个命令。

请记住,无论您是在屏幕输出(前台)上看到错误,还是无法通过屏幕输出(后台)看到错误,这都无关紧要。当是第二种情况时,即使您没有注意到,错误也会被抛出到 shell 解释器。

要检查命令是否返回错误。只需单独执行该命令,然后执行echo $?。如果返回 1,则命令失败,您必须找出命令中出现的问题并修复它。

可以执行sudo aptitude update; sudo aptitude upgrade以避免出现上述问题,但对于任何好奇的人来说,你都会知道发生了什么。

如果你想要更多有关命令退出含义的信息,你可以查看以下页面: http://tldp.org/LDP/abs/html/exit-status.html

(对此有大量的解释,所以如果不满意的话没有理由不去谷歌搜索)

无论如何,谢谢你们!你们给了我非常宝贵的帮助 :)

相关内容