zoukankan      html  css  js  c++  java
  • Shell脚本编程基础之shell脚本逻辑运算

    逻辑运算

    • 逻辑运算又称布尔运算。布尔用数学方法研究逻辑问题,成功地建立了逻辑演算。他用等式表示判断,把推理看作等式的变换。

    • 真、假、与、或、非。

    • 最常见到的逻辑运算就是循环的处理,用来判断是否该离开循环或继续执行循环内的指令。

    ture,false

    ## 二进制
    1 ture
    0 false
    

    与 &

    和0与结果为0,和1与保留原值

    ## 二进制的世界里只有1和0
    0&0=0
    1&0=0
    0&1=0
    1&1=1
    

    或 |

    与1或结果为1,与0或保留原值

    0 | 0 =0
    1 | 0 =1
    0 | 1 =1
    1 | 1 =1
    

    非 !

    取反,真取反为假,假取反为真

    !0 =1
    !1 =0
    

    异或 ^

    相同为假,不同为真

    0^0=0
    1^0=1
    0^1=1
    1^1=0
    

    异或的一个性质:

    假如
    a^b=c
    
    则
    a^c=b
    c^b=a
    

    $? 返回值是十进制的0或者1,不是逻辑判断的二进制的0或者1

    • 利用异或的特性实现变量值的互换
    
    ## 传统利用第三个变量tmp做中间人,进行互换
    [03:38:07 root@C8-3-55 ~]#x=10;y=20;tmp=$x;x=$y;y=$tmp;echo x=$x y=$y
    x=20 y=10
    ## 利用异或运算
    
    [03:40:35 root@C8-3-55 ~]#x=10;y=20;x=$[x^y];y=$[x^y];x=$[x^y];echo x=$x y=$y
    x=20 y=10
    
    ## 第一步将x^y的值赋给x
    
    [03:41:05 root@C8-3-55 ~]#x=10;y=20;x=$[x^y];echo x=$x
    x=30
    ## 第二步,此时x的值为30,再将[x^y]的值赋给y,y的值就被换成原始的x的值
    
    [03:42:43 root@C8-3-55 ~]#x=10;y=20;x=$[x^y];y=$[x^y];echo x=$x y=$y
    x=30 y=10
    
    ## 第三步,此时x的值为30,y的值为10,再将[x^y]的值赋给x,x的值就被换成原始y的值
    
    [03:47:04 root@C8-3-55 ~]#x=10;y=20;x=$[x^y];y=$[x^y];x=$[x^y];echo x=$x y=$y  x=20 y=10
    
    ## 从而完成了两个值的互换
    

    短路与或非

    $? 结果是否为1,命令是否执行成功或者报错失败

    短路与 &&

    实现逻辑判断

    • COMMD 1 为真 则执行COMMD2
    • COMMD 1 为假 则不执行COMMD2

    短路或 ||

    • COMMD 1 为真 则不执行COMMD2
    • COMMD 1 为假 则执行COMMD2
    * * * 胖并快乐着的死肥宅 * * *
  • 相关阅读:
    计算几何中的精度问题
    codeforces上分计划
    洛谷P1962 斐波那契数列 (矩阵快速幂)
    codeforces 1474 E
    codeforces 1474 C
    codeforces 1467 E
    牛客练习赛76 F phi and phi (莫比乌斯反演)
    牛客练习赛76 D 魔物消灭计划 (斯坦纳树)
    牛客练习赛76 E 牛牛数数 (线性基)
    codeforces 1467 D. Sum of Paths (dp)
  • 原文地址:https://www.cnblogs.com/bpzblog/p/14537874.html
Copyright © 2011-2022 走看看