10:Shell 的運算符
(1)數值運算的方法
那如果我需要進行數值運算,可以采用以下三種方法中的任意一種:使用 declare 聲明變量類型,既然所有變量的默認類型是字符串型,那么只要我們把變量聲明為整數型不就可以運算了嗎?使用declare 命令就可以實現聲明變量的類型。命令如下:
[root@localhost ~]# declare [+/-][選項]
變量名選項:
-: 給變量設定類型屬性
+: 取消變量的類型屬性
-a: 將變量聲明為數組型
-i: 將變量聲明為整數型(integer)
-r: 講變量聲明為只讀變量。注意,一旦設置為只讀變量,既不能修改變量的值,也不能刪除變量,甚至不能通過+r 取消只讀屬性.
-x: 將變量聲明為環境變量
-p: 顯示指定變量的被聲明的類型
例子1:聲明變量類型進行運算
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
#給變量 aa 和 bb 賦值
[root@localhost ~]# declare -i cc=$aa+$bb
#聲明變量 cc 的類型是整數型,它的值是 aa 和 bb 的和
[root@localhost ~]# echo $cc
33
#這下終於可以相加了
例子 2:數組變量類型
注意數組的下標是從 0 開始的,在調用數組值時,需要使用${數組[下標]}的方式來讀取。
[root@localhost ~]# name[0]="li "
[root@localhost ~]# name[1]="ming"
[root@localhost ~]# name[2]=" ang"
[root@localhost ~]# echo ${name}
li
#輸出數組的內容,如果只寫數組名,那么只會輸出第一個下標變量
[root@localhost ~]# echo ${name[*]}
li ming ang
例子 3: 環境變量
我們其實也可以使用 declare 命令把變量聲明為環境變量,和 export 命令的作用是一樣的:
[root@localhost ~]# declare -x test=123
#把變量 test 聲明為環境變量
例子 4:只讀屬性
注意一旦給變量設定了只讀屬性,那么這個變量既不能修改變量的值,也不能刪除變量,甚至不能使用“+r”選項取消只讀屬性。命令如下:
[root@localhost ~]# declare -r test
#給 test 賦予只讀屬性
[root@localhost ~]# test=456
-bash: test: readonly variable
#test 變量的值就不能修改了
[root@localhost ~]# declare +r test
-bash: declare: test: readonly variable
#也不能取消只讀屬性
[root@localhost ~]# unset test
-bash: unset: test: cannot unset: readonly variable
#也不能刪除變量.
例子 5:查詢變量屬性和取消變量屬性
變量屬性的查詢使用“-p”選項,變量屬性的取消使用“+”選項。命令如下:
[root@localhost ~]# declare -p cc
declare -i cc="33"
#cc 變量是 int 型
[root@localhost ~]# declare -p name
declare -a name='([0]=" li " [1]="li " [2]="ming")'
#name 變量是數組型
[root@localhost ~]# declare -p test
declare -rx test="123"
#test 變量是環境變量和只讀變量
[root@localhost ~]# declare +x test
#取消 test 變量的環境變量屬性
[root@localhost ~]# declare -p test
declare -r test="123"
#注意,只讀變量屬性是不能取消的.
例子6:shell運算
Shell 進行算運算:
(1)$(( $num1 + $num2 ))
(2)declare –i聲明變量是整形
(3)dd=$(expr $aa + $bb)
#dd 的值是 aa 和 bb 的和。注意“+”號左右兩側必須有空格
(4)let ee=$aa+$bb
(5)gg=$[ .
+$bb ]
Shell運算符:
13 -, + 單目負、單目正
12 !, ~ 邏輯非、按位取反或補碼
11 * , / , % 乘、除、取模
10 +, - 加、減
9 << , >> 按位左移、按位右移
8 < =, > =, < , > 小於或等於、大於或等於、小於、大於
7 == , != 等於、不等於
/* & 按位與/
5 ^ 按位異或
4 | 按位或
3 && 邏輯與
2 || 邏輯或
1 =,+=,-=,*=,/=,%=,&=, ^=, |=, <<=, >>= 賦值、運算且賦
基本上:常用的四則運算,&&,||,
異或運算:二進制運算,& 有0為0 ,| 有1為1
變量的測試與內容置換:
測試變量是否有數值:
情況:
(1)變量沒有聲明,echo輸出是空。 set –u echo $name沒有會報錯,程序的識別需要用到shell自帶的測試
(2)變量聲明 name=””為空
x=${y-新值} x=新值 x 為空 x=$y
如果 y沒有聲明 x=new
如果 y=”” x=空
如果 y=123 x=123