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
聲明:文章來源于網絡,如有侵權請聯系刪除!