自学内容网 自学内容网

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。

关系运算实例

(一)操作数为数字

  1. 相等判断(-eq)

示例代码:

结果:1 -eq 1 is ture,因为a和b的值相等,所以 -eq 运算符返回1(true)1

  1. 不相等判断(-ne)

示例代码:

结果:1 -ne 2 is ture,因为1不等于2,所以 -ne 运算符返回1(true)1

  1. 大于判断(-gt)

示例代码:

结果:2 -gt 1 is ture,因为2大于1,所以 -gt 运算符返回1(true)1

  1. 小于判断(-lt)

示例代码:

结果:1 -lt 2 is ture,因为1小于2,所以 -lt 运算符返回1(true)1

  1. 大于等于判断(-ge)

示例代码:

结果:2 -ge 2 is ture,因为2等于2,满足大于等于关系,所以 -ge 运算符返回1(true)1

  1. 小于等于判断(-le)

示例代码:

结果:1 -le 1 is ture,因为1等于1,满足小于等于关系,所以 -le 运算符返回1(true)1

(二)操作数为纯数字的字符串

因为字符串的类型是数字所以只能进行相等不相等操作

  1. 相等判断(-eq)

结果:-1 -eq 2 is false,虽然是字符串形式的数字,但按照数字比较规则,-1不等于2,所以 -eq 运算符返回0(false)1

  1. 不相等判断(-ne)
    结果:-1 -ne 2 is ture,因为 -1不等于2,所以 -ne 运算符返回1(true)1

(三)操作数为纯字母的字符串

  1. 示例代码

当操作数为纯字母的字符串时,进行关系运算会出现错误或者不符合预期的结果。例如:

这种情况下,因为关系运算符主要用于数字比较,对纯字母字符串进行这样的操作是不恰当的,可能会导致语法错误或者错误的结果输出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)!