原文地址:命令运行的判断依据: ; , &&, ||
作者:linux菜鸟
- cmd ; cmd (不考虑命令相关性的连续命令下达)
在某些时候,我们希望可以一次运行多个命令,例如在关机的时候我希望可以先运行两次 sync 同步化写入磁盘后才 shutdown 计算机,那么可以怎么作呢?这样做呀:
[root@www ~]# sync; sync; shutdown -h now |
在命令与命令中间利用分号 (;) 来隔开,这样一来,分号前的命令运行完后就会立刻接着运行后面的命令了。 这真是方便啊~再来,换个角度来想,万一我想要在某个目录底下创建一个文件,也就是说,如果该目录存在的话, 那我才创建这个文件,如果不存在,那就算了。也就是说这两个命令彼此之间是有相关性的, 前一个命令是否成功的运行与后一个命令是否要运行有关!那就得动用到 && 或 || 啰!
- $? (命令回传值) 与 && 或 ||
如同上面谈到的,两个命令之间有相依性,而这个相依性主要判断的地方就在于前一个命令运行的结果是否正确。 还记得本章之前我们曾介绍过命令回传值吧!嘿嘿!没错,您真聪明!就是透过这个回传值啦! 再复习一次『若前一个命令运行的结果为正确,在 Linux 底下会回传一个 $? = 0 的值』。 那么我们怎么透过这个回传值来判断后续的命令是否要运行呢?这就得要藉由『 && 』及『 || 』的帮忙了! 注意喔,两个 & 之间是没有空格的!那个 | 则是 [Shift]+[] 的按键结果。
命令下达情况 | 说明 |
cmd1 && cmd2 | 1. 若 cmd1 运行完毕且正确运行($?=0),则开始运行 cmd2。 2. 若 cmd1 运行完毕且为错误 ($?≠0),则 cmd2 不运行。 |
cmd1 || cmd2 | 1. 若 cmd1 运行完毕且正确运行($?=0),则 cmd2 不运行。 2. 若 cmd1 运行完毕且为错误 ($?≠0),则开始运行 cmd2。 |