7.5.2 命令执行的判断依据: ; , &&, ||
一般用于多条命令之间没有直接需求联系,最多只是有一个执行先后的关系。
[root@localhost tmp]# sync; shutdown -h now
指令下达情况 | 说明 |
cmd1 && cmd2 | 1. 若 cmd1 执行完毕且正确执行($?=0),则开始执行 cmd2。 2. 若 cmd1 执行完毕且为错误 ($?≠0),则 cmd2 不执行。 |
cmd1 || cmd2 | 1. 若 cmd1 执行完毕且正确执行($?=0),则 cmd2 不执行。 2. 若 cmd1 执行完毕且为错误 ($?≠0),则开始执行 cmd2。 |
[root@localhost tmp]# ls /tmp/abc && touch /tmp/abc/hehe
ls: cannot access /tmp/abc: No such file or directory
#测试 /tmp/abc是否存在,若存在则用 touch 建立 /tmp/abc/hehe
[root@localhost tmp]# ls /tmp/abc || mkdir /tmp/abc
ls: cannot access /tmp/abc: No such file or directory
#测试 /tmp/abc是否存在,若不存在则予以建立,若存在就不作任何事情
[root@localhost tmp]# ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe
#我不清楚 /tmp/abc是否存在,但就是要建立 /tmp/abc/hehe档案
$? 是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值。所谓退出状态,就是上一个命令执行后的返回结果。退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 非0。
[root@localhost tmp]# ls aaaaa
ls: cannot access aaaaa: No such file or directory
&&左边的command1执行成功(返回0表示成功)后,&&右边的command2才能被执行。
如果||左边的command1执行失败(返回非0表示失败),就执行&&右边的command2,否则command2不会被执行。
#分析ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe的执行过程如下:
本章同步视频:https://edu.51cto.com/sd/e4874