最近群里经常讨论到shell里的与(&&)运算与或(运算)
这边也做下简单的总结
1:shell在逻辑运算下,跟其他语言一样支持与或非的逻辑运算(man test,或 在man bash里查的ARITHMETIC EVALUATION一节)
2:shell直接模工下,一般是以0为真,1为假,即根据函数(return)或脚本(exit)来判断真假。
3:bash里的&& 和|| 不像c里的优先级。在bash里,&& 与||是具有相同优先级的 ,而c里,&&优先(没记错的话)
4:awk继承了c的语法,以&&优先于||,并且以1为真,0为假
例子:
[root@localhost tmp]# r0(){ echo 0.$$; return 0;}
[root@localhost tmp]# r1(){ echo 1.$$; return 1;}
[root@localhost tmp]# r0 || r1
0.4572
[root@localhost tmp]# r1 || r0
1.4572
0.4572
[root@localhost tmp]# r0 && r1
0.4572
1.4572
[root@localhost tmp]# r1 && r0
1.4572
[root@localhost tmp]# r1 && r0 || r0
1.4572
0.4572
[root@localhost tmp]# r1 || r0 && r1
1.4572
0.4572
1.4572