阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

shell系列-shell第十二讲

97次阅读
没有评论

共计 2448 个字符,预计需要花费 7 分钟才能阅读完成。

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))
我们来尝试一下,比如打印 5 5 的值 bash [root@localhost ~]# echo $((55)) 25
或者计算 100200 的值 bash [root@localhost ~]# echo $((100200)) 20000
当然还可以做复杂的计算,比如:
bash [root@localhost ~]# echo $((100*20-5000/10)) 1500

声明:文章来源于网络,如有侵权请联系删除!

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-12-03发表,共计2448字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中