其他
Shell基础(8)-逻辑运算、条件判断1
每周二、四、六定期更新!
逻辑运算只有两个结果:
true, false
这是逻辑运算的结果,true用数字表示是1,false用数字表示是0
逻辑运算
与:&
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
即:与运算中,只要有一个为假,则结论一定为假
或:|
或运算用符号“|”表示。
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
非: !
异或:^
0 ^ 0 = 0
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
# 定义两个变量,交换两个变量的值
[root@studyclub ~]# x=8; y=16
[root@studyclub ~]# temp=$x; x=$y; y=$temp; echo x=$x,y=$y # 常规做法:这里借助了中间变量
x=16,y=8
# 下面我们用异或完成这个操作(异或操作可以根据任意两个数算出第三个数,就像加数、被加数、和,知道任意两个就可以算出第三个数)
[root@studyclub ~]# x=8; y=16
[root@studyclub ~]# x=$[x^y]; y=$[x^y]; x=$[x^y]; echo x=$x,y=$y
x=16,y=8
逻辑运算的短路性:
注意:我们把逻辑运算符号左边的条件称为第一个条件,逻辑运算右边的条件称为第二个条件。
短路“与”
第一个条件为假,结果一定为假,无需看第二个条件
第一个条件为真,那么必须再看第二个条件,才能确定最终结果的真假
短路“或”
第一个条件为真,结果一定为真
第一个条件为假,那么必须要看第二个条件,才能确定最终结果的真假
条件判断
test expression
[ expression ]
[[ expression ]]
变量测试
-v VAR 变量VAR是否定义。例如变量NAME是否定义:
[ -v NAME ]
实例:
# 设置一个变量并验证-v选项
[root@studyclub jason]# NAME=Jason
[root@studyclub jason]# test -v NAME
[root@studyclub jason]# echo $? # 说明test命令执行是成功(true 0)
0
# 取消设置上面的变量并验证
[root@studyclub jason]# unset NAME
[root@studyclub jason]# test -v NAME
[root@studyclub jason]# echo $? # 这个时候NAME变量不存在了,故test会返回错误(false 1)
1
# 我们换种形式再试一下
[root@studyclub jason]# NAME=Jason
[root@studyclub jason]# [ -v NAME ]
[root@studyclub jason]# echo $?
0
数字的比较
数字的比较就是比较大小:
格式为:数字1 operation 数字2,
operation如下:
-eq 等于,即英文equal
-ne 不等于,即英文not-equal
-lt 小于,即英文less-than
-le 小于等于,即英文less-than-or-equal
-gt 大于,即英文greater-than
-ge 大于等于,即英文greater-than-or-equal
[root@studyclub jason]# [ 2 -eq 3 ]
[root@studyclub jason]# echo $? # 2等于3吗,2确实不等于3,这个是真的返回false(1)
1
[root@studyclub jason]# [ 2 -eq 2 ]
[root@studyclub jason]# echo $? # 2等于2吗,2确实等于2,返回true(0)
0
[root@studyclub jason]# [ 8 -lt 9 ]
[root@studyclub jason]# echo $? # 8小于9吗,8确实小于9,返回true(0)
0
[root@studyclub jason]# [ 8 -lt 7 ]
[root@studyclub jason]# echo $? # 8小于7吗,8实际上大于7,返回false(1)
1
《Linux基础及进阶》:
051 - Shell基础(3)-环境变量 052 - Shell基础(4)-变量的有效范围、位置变量 053 - Shell基础(5)-退出状态码 054 - Shell基础(6)-set命令实现脚本安全 055 - Shell基础(7)-算术运算看完本文有收获?请分享给更多人
推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!
微信号|bjdream-1
Cloud研习社 ·