【现学现忘&Shell编程】— 40.Shell中的条件判断(三
2020-10-28 本文已影响0人
繁华似锦Fighting
5、两个整数之间比较
通过下表来学习下如何在两个整数之间进行比较(常用):
测试选项 | 作用 |
---|---|
整数1 -eq 整数2 |
判断整数1是否和整数2相等(相等为真) |
整数1 -ne 整数2 |
判断整数1是否和整数2不相等(不相等为真) |
整数1 -gt 整数2 |
判断整数1是否大于整数2(大于为真) |
整数1 -lt 整数2 |
判断整数1是否小于整数2(小于为真) |
整数1 -ge 整数2 |
判断整数1是否大于等于整数2(大于等于为真) |
整数1 -le 整数2 |
判断整数1是否小于等于整数2(小于等于为真) |
示例:
# 1.-eq等于
[root@localhost tmp]# [ 66 -eq 88 ] && echo yes || echo no
no
# 2.-lt小于
[root@localhost tmp]# [ 66 -lt 88 ] && echo yes || echo no
yes
# 3.-le小于等于
[root@localhost tmp]# [ 66 -le 88 ] && echo yes || echo no
yes
# 在Shell编程的时候,会把数值型变量引入条件判断表达式中,
# 就不会是光突突的数字了。
6、字符串的判断
通过下表我们来学习下字符串的判断:
测试选项 | 作用 |
---|---|
-z 字符串 |
判断字符串是否为空(为空返回真) |
-n 字符串 |
判断字符串是否为非空(非空返回真) |
字符串1 == 字符串2 |
判断字符串1是否和字符串2相等(相等返回真) |
字符串1 != 字符串2 |
判断字符串1是否和字符串2不相等(不相等返回真) |
示例1:
# 判断变量name是否为空
[root@localhost tmp]# [ -z "$name" ] && echo yes || echo no
yes
# 给变量name赋值
[root@localhost tmp]# name=Zhubj
# 因为不为空,所以返回no
[root@localhost tmp]# [ -z "$name" ] && echo yes || echo no
no
示例2:
# 给变量aa和变量bb赋值
[root@localhost tmp]# aa=Shell
[root@localhost tmp]# bb=Shell
# 判断变量aa和变量bb是否相等
# 因为变量aa的值为"Shell",不等于字符串"bb",所以返回no。
[root@localhost tmp]# [ "$aa" == "bb" ] && echo yes || echo no
no
# 变量aa和变量bb的值都为"Shell",所以返回yes。
[root@localhost tmp]# [ "$aa" == "$bb" ] && echo yes || echo no
yes
提示:Shell中用
==
双等号来比对两个字符串是否相等(内容相同)。使用-eq
来比对两个整数是否相等。
7、多重条件判断
通过下表来看看多重条件判断是什么样子的:
测试选项 | 作用 |
---|---|
判断1 -a 判断2 |
逻辑与,判断1和判断2都成立,最终的结果才为真。 |
判断1 -o 判断2 |
逻辑或,判断1和判断2有一个成立,最终的结果就为真。 |
! 判断 |
逻辑非,使原始的判断式取反。 |
也就是说多重条件判断就是,可以同时判断多个条件,前边的条件都可以。
示例1:
# 定义一个变量aa赋值并赋值66。
[root@localhost tmp]# aa=66
# 判断变量aa是否有值,同时判断变量aa的是否大于88。
# 因为变量aa的值不大于88,所以虽然第一个判断值为真,返回的结果也是假。
[root@localhost tmp]# [ -n "$aa" -a "$aa" -gt 88 ] && echo "yes" || echo "no"
no
# 给变量aa重新赋个大于88的值,返回结果就是yes了。
[root@localhost tmp]# aa=99
[root@localhost tmp]# [ -n "$aa" -a "$aa" -gt 88 ] && echo "yes" || echo "no"
yes
示例2:
# 练习逻辑非
# 说明:
# "-n"选项是变量aa不为空,返回值就是真。
# 加入"!"之后,判断值就会取反,所以当变量aa有值时,返回值是假.
# "!"+"-n"选项就和"-z"选项作用一样了。
[root@localhost tmp]# aa=99
[root@localhost tmp]# [ ! -n "$aa" ] && echo "yes" || echo "no"
no
# 在定义一个没有赋值的变量cc,返回结果就是yes。
[root@localhost tmp]# [ ! -n "$cc" ] && echo "yes" || echo "no"
yes
# 注意:"!"和"-n"选项之间必须加入空格,否则会报错的。