zoukankan      html  css  js  c++  java
  • Shell入门(八)之布尔运算

    一、常规的布尔运算

    常规的布尔运算符有:!、&&、||

    使用语法

    ! exp

    exp &&  exp

    exp || exp

    [[ n op m && a op b]]

    ...

    exp为[ n op m ]或test n op m或true或false

    二、条件测试的布尔运算

    条件测试的布尔运算有:!、-o、-a

    a = 10

    b=20

    运算符说明举例
    ! 非运算,表达式为 true 则返回 false,否则返回 true。 [ ! false ] 或test ! false返回 true。
    -o 或运算,有一个表达式为 true 则返回 true。 [ $a -lt 20 -o $b -gt 100 ] 或test $a -lt 20 -o $b -gt 100返回 true。
    -a 与运算,两个表达式都为 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ]或test $a -lt 20 -a $b -gt 100返回 false。

    三、实例

    #!/bin/bash
    a=10
    b=20
    echo -e "
    ----true/false----"
    if ! false 
    then
     echo "!false:true"
    fi
    if true || false 
    then
     echo "true||false:true"
    fi
    if true && false 
    then
     echo "true&&false:true"
    else
     echo "true&&false:false"
    fi
    
    echo -e "
    ---- ! && || [] ----"
    if ! [ $a -eq $b ]
    then
      echo "![$a 等于 $b]:true"
      else
      echo "![$a 等于 $b]:false"
    fi
    if [ $a -eq $b ] && [ $a -ne $b ]
    then
      echo "[$a 等于 $b]&&[$a 不等于 $b]:true"
      else
      echo "[$a 等于 $b]&&[$a 不等于 $b]:false"
    fi
    if [ $a -eq $b ] || [ $a -ne $b ]
    then
      echo "[$a 等于 $b]||[$a 不等于 $b]:true"
      else
      echo "[$a 等于 $b]||[$a 不等于 $b]:false"
    fi
    
    echo -e "
    ---- ! && || test ----"
    if ! test $a -eq $b 
    then
      echo "! test $a 等于 $b:true"
      else
      echo "! test $a 等于 $b:false"
    fi
    if test $a -eq $b  && test $a -ne $b 
    then
      echo "test $a 等于 $b && test $a 不等于 $b:true"
      else
      echo "test $a 等于 $b && test $a 不等于 $b:false"
    fi
    if test $a -eq $b || test $a -ne $b 
    then
      echo "test $a 等于 $b || test $a 不等于 $b:true"
      else
      echo "test $a 等于 $b || test $a 不等于 $b:false"
    fi
    
    echo -e "
    ----  [[  && || ]] ----"
    if [[ $a -eq $b  &&  $a -ne $b ]]
    then
      echo "[[$a 等于 $b && $a 不等于 $b]]:true"
      else
      echo "[[$a 等于 $b && $a 不等于 $b]]:false"
    fi
    if [[ $a -eq $b  ||  $a -ne $b ]]
    then
      echo "[[$a 等于 $b || $a 不等于 $b]]:true"
      else
      echo "[[$a 等于 $b || $a 不等于 $b]]:false"
    fi
    
    echo -e "
    ---- [ ! -a -o ] ----"
    if [ ! $a -ne $b ]
    then
      echo "[!$a 不等于 $b]:true"
      else
      echo "[!$a 不等于 $b]:false"
    fi
    if [ $a -gt $b -o $a -lt $b ]
    then
      echo "[$a 大于 $b -o $a 小于 $b]:true"
      else
      echo "[$a 大于 $b -o $a 小于 $b]:false"
    fi
    if [ $a -lt $b -a  $a -gt $b ] 
    then
      echo "[$a 小于 $b -a $a 大于 $b]:true"
      else
      echo "[$a 小于 $b  -a $a 大于 $b]:false"
    fi
  • 相关阅读:
    【转】进程与线程的一个简单解释
    折半查找
    BOJ 89 统计时间间隔
    BOJ 88 最值问题
    BOJ 87 日期
    QT杂记(网上资料整理而成)
    我的博客园
    【制作镜像】virsh
    【培训】MySQL
    ERROR 1045 (28000): Access denied for user 'root'@'localhost'
  • 原文地址:https://www.cnblogs.com/maokun/p/7421894.html
Copyright © 2011-2022 走看看