shell系列-shell第十二讲
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
声明:文章来源于网络,如有侵权请联系删除!