前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell系列-shell第十二讲

shell系列-shell第十二讲

作者头像
小小科
修改2020-05-09 14:18:03
3090
修改2020-05-09 14:18:03
举报
文章被收录于专栏:北京马哥教育北京马哥教育

1、整数比较符

上一节课我们给大家讲解了[ expression ]以及[[ expression ]]和test命令这三者的使用方法,以及他们的使用区别,不知道大家是否还记得,忘记的同学可以赶紧翻看课本看看去。

那么今天我们给大家讲讲整数比较符。这在我们的实际工作中是相当常用的,快来跟我一起学习吧。

1.1、-eq

-eq,即equal的意思,在之前的小节中我们都使用过,它相当于我们数学中的等于意思,比如:

bash [root@master1 ~]#[ 1 -eq 1 ] [root@master1 ~]#echo $? 0 [root@master1 ~]#[ 1 -eq 2 ] [root@master1 ~]#echo $? 1 [root@master1 ~]#[ 1 -eq 0 ] [root@master1 ~]#echo $? 1

1确实等于1,条件为真,此时$?返回值就为0,当我们拿1与其他数值做比较的时候,我们知道肯定是不相等的,此时返回值都不为0,条件为假。

1.2、-ne

-ne,即not equal,也就是不等于的意思,比如:

bash [root@master1 ~]#[ 1 -ne 0 ] [root@master1 ~]#echo $? 0 [root@master1 ~]#[ 1 -ne 2 ] [root@master1 ~]#echo $? 0

1与0比确实不相等,1与2比也确实不相等,此时条件为真,返回值都为0,而你要是在-ne中拿1和1做等于比较,此时条件就为假了,比如:

bash [root@master1 ~]#[ 1 -ne 1 ] [root@master1 ~]#echo $? 1

我想上过学的同学都能想清楚这点,1等于1没毛病,现在说1不等于1,那肯定是错的嘛。

1.3、`-gt

-gt,即greater than,也就是大于的意思,比如:

bash [root@master1 ~]#[ 5 -gt 1 ] [root@master1 ~]#echo $? 0 [root@master1 ~]#[ 5 -gt 4 ] [root@master1 ~]#echo $? 0

5确实比1和4都大,因此他的条件判断返回值都为0,条件为真。

不过需要注意,“大于“和”大于等于“不是一回事,比如拿5跟5作比较,条件肯定为假,比如

bash [root@master1 ~]#[ 5 -gt 5 ] [root@master1 ~]#echo $? 1

5是等于5的,这里用-gt是不行的。

1.4、-lt

-lt,即less than,也就是小于的意思,比如:

bash [root@master1 ~]#[ 1 -lt 5 ] [root@master1 ~]#echo $? 0

1确实小于5,因此条件为真,返回值为0。

1.5、-ge

-ge,即greater or equal,也就是大于等于的意思,比如

bash [root@master1 ~]#[ 5 -ge 4 ] [root@master1 ~]#echo $? 0 [root@master1 ~]#[ 5 -ge 5 ] [root@master1 ~]#echo $? 0

大于等于,这是两个比较,要么是大于要么是等于,条件都为真,我们上面的5大于等于4,而5也大于等于5。因此条件都为真,返回值为0。

1.6、-le

-le,即 less or equal的意思,也就是小于等于之意,比如

bash [root@master1 ~]#[ 4 -le 5 ] [root@master1 ~]#echo $? 0 [root@master1 ~]#[ 5 -le 5 ] [root@master1 ~]#echo $? 0

4小于等于5,5也小于等于5,条件都为真,返回值也都为0。

2、()和(())的解说

2.1、()

2.1.1、定义数组

在shell里面,用括号()来表示数组,数组元素之间用空格来分割,由此,我们是这样定义数组的:

bash [root@localhost ~]# ARRAY=(arg1 arg2 arg3 arg4 arg5)

比如我们定义一组数值类型的数组,比如:

bash [root@localhost ~]# nums=(11 22 33 44 55)

shell中的数组类型不像高级编程语言C、java等那么严格,shell并不要求所有数组元素的类型必须相同,所以你也可以这么定义:

bash [root@localhost ~]# nums=(11 22 "https://www.baidu.com")

可以看出来前面是数值,后面第三个元素是一个百度网址。

2.1.2、获取数组元素

获取数组元素的值,语法是

bash [root@localhost ~]# ${数组名[下标]}

看,我们这里又使用了$这个符号,这个符号还是很强大的呢。

需要注意:数组的下标Index默认都是从0号开始的,也就是说你要获取第一个元素,此时下标要写0,要获取第三个元素,此时下标写2,即下标=获取的元素次序-1

比如我们获取上面nums数组的第1个元素,此时是

bash [root@localhost ~]# echo ${nums[0]} 11

要获取第三个元素,此时为:

bash [root@localhost ~]# echo ${nums[2]} https://www.baidu.com

大家都明白了吗?

2.2、(())

2.2.1、双小括号(())

双小括号一般用于数学运算表达式,就像做数学中的加法和减法一样。比如:

bash [root@localhost ~]# ((1+1)) [root@localhost ~]# ((15)) 此时并没有打印算式的输出结果,这是因为我们还需要使用$来获取结果,$真的是非常强大。获取值是这样的。 bash [root@localhost ~]# echo $((15))

我们来尝试一下,比如打印55的值 bash [root@localhost ~]# echo $((55)) 25

或者计算100200的值 bash [root@localhost ~]# echo $((100200)) 20000

当然还可以做复杂的计算,比如:

bash [root@localhost ~]# echo $((100*20-5000/10)) 1500

文章转载于马哥教育官网,更多技术性文章可以访问马哥教育官网欧!

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档