逻辑判断符号
&& -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 ~]#