如果一个命令以&
结尾,那么这个命令会在子shell中异步执行,也被称为异步命令。当前shell不用等到子shell执行完成,这个异步命令的返回状态永远是0 ( 表示成功 )。
如果多个命令通过;
分隔,那么这些命令顺序执行,当前shell会等到所有命令执行完毕。这个命令集的返回状态就是最后一个命令的退出状态。
如果多个命令通过&&
分隔,例如 command1 && command2
,只有当 command1 命令的退出状态为0时,才会执行 command2。
如果多个命令通过||
分隔,例如 command1 || command2
,只有当命令 command1 退出状态非0时,command2 才会被执行。
&&
和||
有相同的优先级,&
和;
有相同的优先级,但是&&
和||
的优先级比&
和;
要高。
参考
https://www.gnu.org/software/bash/manual/bash.html#Lists