在教程和操作方法中,我经常看到命令组合。例如,
sudo apt-get update && sudo apt-get install pyrenamer
似乎有四种可能的连接器:&
,&&
,||
和;
。尽管&
连接器对我来说很清楚(它会将进程发送到后台并使终端可用),但尚不清楚&&
和之间的区别;
。||
直到Kaya发表评论,我才知道。
下列问题处理两个连接器之间的差异,但主要是在注释中进行:
因此,这里有一些相关的问题:
;
和之间有什么区别&&
?- 什么时候应该分别使用它们?很高兴看到一些用例:如果我要运行命令,然后在关闭计算机后运行,我应该选择哪个连接器?
- 它们的优点和危险是什么?Robie Basak在对此答案的评论中提到,例如,
cd /somewhere_else; rm -Rf *
如果命令链中的第一个元素失败,则类似的命令可能会造成破坏性后果。 - 如果相关,它们来自哪里?
set -e
会在失败时停止脚本,就好像所有命令都已连接一样&&
。
||
相同,&&
只是它仅在第一个命令以非零(不成功)状态退出时才执行第二个命令。