Shell
Bash shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? != 1 时,表示执行失败。有时候,我们需要下一条命令依赖前一条命令执行成功与否的状态。
如:只有在成功地执行一条命令之后再执行另一条命令,或者只有在前一条命令执行失败后,再执行下一条命令等。Bash shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。
&&
只有在前一条命令执行成功后,才会执行后面的命令
||
只有前一条命令是否执行失败,才会执行后面的命令
举个例子:
xinlin@ubuntuserver:~/acme-tiny$ cat tt
cat: tt: No such file or directory
xinlin@ubuntuserver:~/acme-tiny$ echo $?
1
xinlin@ubuntuserver:~/acme-tiny$ cat tt && echo 'abcde'
cat: tt: No such file or directory
xinlin@ubuntuserver:~/acme-tiny$ cat tt || echo 'abcde'
cat: tt: No such file or directory
abcde
cat tt时会执行失败的命令,因为没有tt这个文件,
使用&&连接echo命令,echo命令就不会执行;
使用||连接echo命令,cat tt执行失败后echo才会执行。
如果想让多条命令无论如何都执行呢?
使用逗号 ;
xinlin@ubuntuserver:~/acme-tiny$ cat ttt ; echo 'abcde'
cat: ttt: No such file or directory
abcde
总结一下:
&
表示任务在后台执行
&&
表示前一条命令执行成功时,才执行后一条命令
|
表示管道,上一条命令的输出,作为下一条命令参数
||
表示上一条命令执行失败后,才执行下一条命令
;
表示不管前面的命令如何,后面的都会执行