shell中连接符(并且、和、或者)

回复 收藏
&& 并且    连接两个命令时,左边的命令执行成功,才会执行右边的命令
[root@awulinux ~]# ls 2.txt && ls 3.txt
2.txt
3.txt
[root@awulinux ~]# ls 10.txt && ls 3.txt     左边的命令没有执行成功,右边的命令不再执行
ls: 无法访问10.txt: 没有那个文件或目录
[root@awulinux ~]# ls 2.txt && ls 30.txt
2.txt
ls: 无法访问30.txt: 没有那个文件或目录

|| 或者      连接两个命令时,左边的命令执行不成功,才会执行右边的命令
[root@awulinux ~]# ls 2.txt || ls 30.txt
2.txt
[root@awulinux ~]# ls 20.txt || ls 30.txt
ls: 无法访问20.txt: 没有那个文件或目录
ls: 无法访问30.txt: 没有那个文件或目录
[root@awulinux ~]# ls 20.txt || ls 3.txt
ls: 无法访问20.txt: 没有那个文件或目录
3.txt

;分号     连接两个命令时,左边的命令执行成功与否,右边的命令都会执行

$? 命令回传码
当我们执行某些命令时,这些命令都会回传一个执行后的代码。一般来说,如果成功执行该命令,则会回传一个0值,如果执行过程发生错误,就会回传“错误代码“。
一般就是以非0的数值来代替。
通过上面我们知道,另个命令有相依性,而这个相依性主要判断的地方就在于前一个命令执行的结果是否正确。
命令回传码:若前一个命令执行的结果为正确,在Linux下面会回传一个$?=0的值。

cmd1 && cmd2
若cmd1执行完毕且正确执行($?=0),则开始执行cmd2
若cmd1执行完毕且为错误($?≠0),则cmd2不执行

cmd1 || cmd2
若cmd1执行完毕且正确执行($?=0),则cmd2不执行
若cmd1执行完毕且为错误($?≠0),则开始执行cmd2
2016-06-07 00:09 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: