linux从0到1——shell编程5
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)
一,字符串运算符
在Shell编程中,关系运算符主要用于比较两个操作数之间的关系,这些操作数可以是数字或者值为纯数字(包括负数)的字符串。关系运算的结果为真(返回1)或假(返回0),具体功能如下:
运算符 | 说明 | 举例 |
-eq | 检测两个数是否相等,相等返回 true。 | [ $a -eq $b ] 返回 false。 |
-ne | 检测两个数是否不相等,不相等返回 true。 | [ $a -ne $b ] 返回 true。 |
-gt | 检测左边的数是否大于右边的,如果是,则返回 true。 | [ $a -gt $b ] 返回 false。 |
-lt | 检测左边的数是否小于右边的,如果是,则返回 true。 | [ $a -lt $b ] 返回 true。 |
-ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 | [ $a -ge $b ] 返回 false。 |
-le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 | [ $a -le $b ] 返回 true。 |
关系运算实例
(一)操作数为数字
- 相等判断(-eq)
示例代码:
结果:1 -eq 1 is ture,因为a和b的值相等,所以 -eq 运算符返回1(true)1。
- 不相等判断(-ne)
示例代码:
结果:1 -ne 2 is ture,因为1不等于2,所以 -ne 运算符返回1(true)1。
- 大于判断(-gt)
示例代码:
结果:2 -gt 1 is ture,因为2大于1,所以 -gt 运算符返回1(true)1。
- 小于判断(-lt)
示例代码:
结果:1 -lt 2 is ture,因为1小于2,所以 -lt 运算符返回1(true)1。
- 大于等于判断(-ge)
示例代码:
结果:2 -ge 2 is ture,因为2等于2,满足大于等于关系,所以 -ge 运算符返回1(true)1。
- 小于等于判断(-le)
示例代码:
结果:1 -le 1 is ture,因为1等于1,满足小于等于关系,所以 -le 运算符返回1(true)1。
(二)操作数为纯数字的字符串
因为字符串的类型是数字所以只能进行相等不相等操作
- 相等判断(-eq)
结果:-1 -eq 2 is false,虽然是字符串形式的数字,但按照数字比较规则,-1不等于2,所以 -eq 运算符返回0(false)1。
- 不相等判断(-ne)
结果:-1 -ne 2 is ture,因为 -1不等于2,所以 -ne 运算符返回1(true)1。
(三)操作数为纯字母的字符串
- 示例代码
当操作数为纯字母的字符串时,进行关系运算会出现错误或者不符合预期的结果。例如:
这种情况下,因为关系运算符主要用于数字比较,对纯字母字符串进行这样的操作是不恰当的,可能会导致语法错误或者错误的结果输出1。
(四)操作数为算术表达式字符串
- 关系运算符对算术表达式字符串的处理
Shell关系运算符只支持数字,不支持字符串(除非字符串的值是数字)。如果是算术表达式字符串,需要先计算出表达式的结果(如果可能)再进行关系运算。
结果:5 -gt 4 is ture,这里先通过算术运算得出a的值为5,再进行大于比较,得到正确的结果1。
二,Shell编程中的逻辑运算符
在Shell编程中,逻辑运算符用于处理逻辑表达式,包括逻辑与(AND)、逻辑或(OR)以及逻辑非(NOT)。这些运算符可以帮助我们在编写脚本时进行条件判断和逻辑控制。以下是Shell编程中常见的逻辑运算符及其使用方法:
逻辑与(&&)
逻辑与运算符用于连接两个条件,只有当两个条件都为真时,整个表达式才为真。在Shell中,可以使用&&运算符来实现逻辑与操作。例如:
if [ condition1 ] && [ condition2 ]; then
# 当condition1和condition2都为真时执行这里的代码
fi
逻辑或(||)
逻辑或运算符用于连接两个条件,只要其中一个条件为真,整个表达式就为真。在Shell中,可以使用||运算符来实现逻辑或操作。例如:
if [ condition1 ] || [ condition2 ]; then
# 当condition1或condition2为真时执行这里的代码
fi
逻辑非(!)
逻辑非运算符用于对一个条件进行取反操作,如果条件为真,则取反后为假;如果条件为假,则取反后为真。在Shell中,可以使用!运算符来实现逻辑非操作。例如:
if ! [ condition ]; then
# 当condition为假时执行这里的代码
fi
示例代码
以下是一个综合使用逻辑与、逻辑或和逻辑非运算符的示例代码:
结果如下:
三,Shell编程中的逻辑运算符和布尔运算符的关系
在Shell编程中,逻辑运算符和布尔运算符实际上是紧密相关的。逻辑运算符通常用于处理布尔值(真或假),而布尔运算符则是专门用于布尔逻辑操作的运算符。下面我们将详细解释这两者之间的关系。
逻辑运算符
逻辑运算符包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。它们用于连接和取反条件表达式。例如:
if [ condition1 ] && [ condition2 ]; then
# 当condition1和condition2都为真时执行这里的代码
fi
在这个例子中,&&运算符用于连接两个条件表达式condition1和condition2。只有当这两个条件都为真时,整个表达式才为真。
布尔运算符
布尔运算符通常用于处理布尔值(真或假)。在Shell中,布尔运算符包括-n(非空字符串为真)、-z(空字符串为真)、=(字符串相等为真)和!=(字符串不相等为真)。例如:
if [ -n "$string" ]; then
echo "字符串非空"
fi
在这个例子中,-n运算符用于检查字符串是否非空。如果字符串非空,则整个表达式为真。
关系
逻辑运算符和布尔运算符之间的关系在于,逻辑运算符通常用于连接和取反布尔表达式,而布尔运算符则用于生成布尔值。例如:
if [ -n "$string" ] && [ "$string" = "hello" ]; then
echo "字符串非空并且等于'hello'"
fi
在这个例子中,-n和=都是布尔运算符,它们分别生成布尔值。然后,&&逻辑运算符用于连接这两个布尔表达式。
综上所述,逻辑运算符和布尔运算符在Shell编程中是紧密相关的。逻辑运算符用于连接和取反条件表达式,而布尔运算符则用于生成布尔值。通过合理使用这两种运算符,我们可以实现复杂的条件判断和逻辑控制,从而编写出更加灵活和强大的Shell脚本。
原文地址:https://blog.csdn.net/zhongyuekang820/article/details/143894761
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!