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