shell中的&&与||

本文介绍如何利用Linux命令行中的逻辑运算符&&与||控制命令执行流程。通过具体示例展示如何依据上一条命令的返回值决定下一条命令是否执行。

在linux中前一个命令执行的结果正确,则Linux下面会回传一个$?=0的值。那么我们怎么透过这个回传值来判断后续的指令是否要执行呢?这就得要由&&及||的帮忙了!

范例一:使用 ls 查阅目录 /tmp/abc 是否存在,若存在则用 touch 建立 
/tmp/abc/hehe  
[root@www ~]# ls /tmp/abc && touch /tmp/abc/hehe 
ls: /tmp/abc: No such file or directory  
# ls说明找不到该目录,但幵没有 touch 癿错误,表示 touch 并没有执行 
 
[root@www ~]# mkdir /tmp/abc 
[root@www ~]# ls /tmp/abc && touch /tmp/abc/hehe 
[root@www ~]# ll /tmp/abc 
-rw-r--r-- 1 root root 0 Feb  7 12:43 hehe

 

看到了吧?如果 /tmp/abc 不存在时,touch 就不会被执行,若 /tmp/abc 存在的话,那么 touch 就会开始执行啰!

范例二:测试 /tmp/abc 是否存在,若不存在则建立,若存在不干事 
[root@www ~]# rm -r /tmp/abc                <==先初除此目录
[root@www ~]# ls /tmp/abc || mkdir /tmp/abc 
ls: /tmp/abc: No such file or directory <==真的不存在喔! 
[root@www ~]# ll /tmp/abc                   
total 0                                 <==结果出现了!有进行 mkdir

 

如果我想要建立 /tmp/abc/hehe 这个档案,但我并不知道 /tmp/abc 是否存在,那该如何是好

范例三:我不清楚 /tmp/abc 是否存在,但就是要建立 /tmp/abc/hehe 档案 
[root@www ~]# ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe

范例三有几种结果我们来分析一下:

          (1)    /tmp/abc 不存在故回传 $?0,则 (2)因为 || 遇到非为 0 $? 故开始 mkdir /tmp/abc,由于 mkdir /tmp/abc 会成功执行,所以回传 $?=0 (3)因为 && 遇到 $?=0 故会执行 touch

         (2)    /tmp/abc 存在故回传 $?=0,则 (2)因为 || 遇到 0 $? 不会执行,此时 $?=0 继续向后传,故 (3)因为 && 遇到$?=0 就开始建立 /tmp/abc/hehe 了!最终 /tmp/abc/hehe 被建立起来。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值