shell_条件判断_逻辑判断符号

发布时间 2023-10-10 10:47:03作者: WeChat2834
逻辑判断符号

&& -a 与运算,两边都为真的适合,结果为真

|| -o 或运算,两边有一个为真,结果就为真

  • 语法
在[]和test中使用的操作符 在[[]]和(())中使用的操作符 说明
-a && and ,与,两端为真,则结果为真
-o || or ,或,两端一个为真 则结果为真
! ! not ,非,两端相反,则结果为真
  • 应用实例

    [root@localhost ~]# ###在[]中使用
    [root@localhost ~]# [ 2 -gt 1 &&  2 -eq 2 ] && echo ok || echo no #####中括号中不能使用&&
    bash: [: 缺少 `]'
    no
    [root@localhost ~]# [ 2 -gt 1 -a  2 -eq 2 ] && echo ok || echo no ###与条件
    ok
    [root@localhost ~]# [ 2 -gt 1 ]&&  [ 2 -eq 2 ] && echo ok || echo no ###与条件
    ok
    [root@localhost ~]# [ 2 -gt 3 ]&&  [ 2 -eq 2 ] && echo ok || echo no ###与条件
    no
    [root@localhost ~]# [ 2 -gt 3 -a  2 -eq 2 ] && echo ok || echo no  ###与条件
    no
    [root@localhost ~]# [ 2 -gt 3 -o  2 -eq 2 ] && echo ok || echo no   ###或条件
    ok
    [root@localhost ~]# [ 2 -gt 3 ]|| [ 2 -eq 2 ] && echo ok || echo no  ###或条件
    ok
    [root@localhost ~]# [ ! 2 -gt 3 ] && echo ok || echo no   ###取反
    ok
    [root@localhost ~]# [ ! 2 -gt 1 ] && echo ok || echo no
    no
    [root@localhost ~]# 
    
    #############################################在双中括号中使用
    [root@localhost ~]# [[ 2 -gt 3 -o  2 -eq 2 ]] && echo ok || echo no  ####就不能使用之前的-a这类操作符了
    bash: 条件表达式中有语法错误
    bash: `-o' 附近有语法错误
    [root@localhost ~]# [[ 2 -gt 3 &&  2 -eq 2 ]] && echo ok || echo no
    no
    [root@localhost ~]# [[ 2 -gt 3 ||  2 -eq 2 ]] && echo ok || echo no
    ok
    [root@localhost ~]# 
    [root@localhost ~]# [[ 2 -gt 3 || ! 2 -eq 2 ]] && echo ok || echo no  ###!加个取反
    no
    [root@localhost ~]#