知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

shell中的&&与||

发布时间:2014-09-05 14:33:33作者:知识屋

shell中的&&与||
 
在linux中前一个命令执行的结果正确,则Linux下面会回传一个$?=0的值。那么我们怎么透过这个回传值来判断后续的指令是否要执行呢?这就得要由&&及||的帮忙了!
 
 
[html] 
范例一:使用 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 就会开始执行!
 
[html] 
范例二:测试 /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  
<span style="font-size:14px;"></span>  
 
如果我想要建立 /tmp/abc/hehe 这个档案,但我并不知道 /tmp/abc 是否存在,那该如何是好
 
[html] 
范例三:我不清楚 /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 被建立起来。
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜