shell中&&与||

来源:互联网 发布:成都市行知实验小学 编辑:程序博客网 时间:2024/04/19 15:18
指令执行成功返回0
那个 || 刚好完全跟 && 相反,当前一个指令有错误时,在 || 后面的指令才会被执行! 
例题:以 ls 测试 /tmp/vbirding 是否存在,若存在则显示 "exist" ,若不存在,则显示 "not  exist"! 

答: 这又牵涉到逻辑判断的问题,如果存在就显示某个数据,若不存在就显示其它数据,
       那我可以这样做: 
       ls /tmp/vbirding && echo "exist" || echo "not exist" 
        
    意思是说,当 ls /tmp/vbirding 执行后,若正确,就执行 echo "exist" ,若有问 题,就执行 echo "not exist" !那如果我写成:  
               
         ls /tmp/vbirding || echo "not exist" && echo "exist" 
        
       对不对啊?这其实是有问题的,为什么呢?因为指令是一个一个往下执行,因此,在
       上面的例子当中,如果 /tmp/vbirding 不存在时,他会:  
               
          1. 若 ls /tmp/vbirding 不存在,因此回传一个非为 0 的数值;  
          2.  接下来经过 || 的判断,发现前一个指令回传非为 0 的数值,因此,程序开始执行 echo "not exist" ,而 echo "not exist" 程序肯定可以执行成功,
              因此会回传一个 0 值给后面的指令;  
          3.  经过 && 的判断,咦!是 0 啊!所以就开始执行 echo "exist" 。 
        
        所以啊,嘿嘿!第二个例子里面竟然会同时出现 not exist 与 exist 呢!真神奇~ 
 
经过这个范例的练习,您应该会了解,由于指令是一个接着一个去执行的,因此,如果真要使用判断, 那么这个 && 与 || 的顺序就不能搞错~一般来说,判断式最多会有三个,也就是:  
       command1 && command2 || command3 
而且顺序通常不会变,因为一般来说, command2 与 command3 会放置肯定可以执行成功的指令, 因此,依据上面例题的逻辑分析,您就会晓得为何要如此放置啰~这很有用的啦! 
原创粉丝点击