1.數值運算
(1)declare聲明變量類型
[root@localhost ~]# declare [+/-][選項] 變量名
選項:
-: 給變量設定類型屬性
+: 取消變量的類型屬性
-i: 將變量聲明爲整數型(integer)
-x: 將變量聲明爲環境變量
-p: 顯示指定變量的被聲明的類型
[cfp@bogon ~]$ aa=11
[cfp@bogon ~]$ bb=22
[cfp@bogon ~]$ declare -p aa
declare -- aa="11"
[cfp@bogon ~]$ export aa
[cfp@bogon ~]$ declare -p aa
declare -x aa="11"
[cfp@bogon ~]$ aa=11
[cfp@bogon ~]$ bb=22
[cfp@bogon ~]$ cc=$aa+$bb
[cfp@bogon ~]$ echo $cc
11+22
那麼,如何進行數值運算呢?也就是說計算“1+1=2”呢?
方法一:
[cfp@bogon ~]$ aa=11
[cfp@bogon ~]$ bb=22
[cfp@bogon ~]$ declare -i cc=$aa+$bb
[cfp@bogon ~]$ echo $cc
33
方法二:expr或let數值運算工具
[cfp@bogon ~]$ aa=11
[cfp@bogon ~]$ bb=22
[cfp@bogon ~]$ dd=$(expr $aa + $bb)
#dd 的值是 aa 和 bb 的和。注意“ + ”號左右兩 側必須有空格
[cfp@bogon ~]$ echo $dd
33
方法三:“$((運算式))”或“$[運算式]” 。這種方法在Linux中最常見。
[cfp@bogon ~]$ aa=11
[cfp@bogon ~]$ bb=22
[cfp@bogon ~]$ ff=$(($aa+$bb))
[cfp@bogon ~]$ echo $ff
33
[cfp@bogon ~]$ gg=$[$aa+$bb]
[cfp@bogon ~]$ echo $gg
33
2. 運算符
優先級 | 運算符 | 說明 |
---|---|---|
13 | -,+ | 單目負、單目正 |
12 | !,~ | 邏輯非、按位取反或補碼 |
11 | *,/,% | 乘、除、取模 |
10 | +,- | 加、減 |
9 | <<,>> | 按位左移、按位右移 |
8 | <=,>=,<,> | 小於或等於、大於或等於、小於、大於 |
7 | ==,!= | 等於、不等於 |
6 | & | 按位與 |
5 | ^ | 按位異或 |
4 | | | 按位或 |
3 | && | 邏輯與 |
2 | || | 邏輯或 |
1 | =,+=,=,*=,/=,%=,&=, ^=, |=, <<=, >>= | 賦值、運算且賦值 |
[cfp@bogon ~]$ a=$(((7+8)*6/3))
[cfp@bogon ~]$ echo $a
30
[cfp@bogon ~]$ bb=$((14%3))
[cfp@bogon ~]$ echo $bb
2
[cfp@bogon ~]$ cc=$((1 && 0))
[cfp@bogon ~]$ echo $cc
0
3.變量測試與內容替換
變量置換方式 | 變量y沒有設置 | 變量y爲空值 | 變量y設置值 |
---|---|---|---|
x=${y-新值} | x=新值 | x爲空 | x=$y |
x=${y:-新值} | x=新值 | x=新值 | x=$y |
x=${y+新值} | x爲空 | x=新值 | x=新值 |
x=${y:+新值} | x爲空 | x爲空 | x=新值 |
x=${y=新值} | x=新值,y=新值 | x爲空 y值不變 | x=$y y值不變 |
x=${y:=新值} | x=新值 y=新值 | x=新值 y=新值 | x=$y y值不變 |
x=${y?新值} | 新值輸出到標準錯誤輸出(就是屏幕) | x爲空 | x=$y |
x=${y:?新值} | 新值輸出到標準錯誤輸出 | 新值輸出到標準錯誤輸出 | x=$y |
[cfp@bogon ~]$ unset y
# 刪除變量 y
[cfp@bogon ~]$ x=${y-new}
# 進行測試
[cfp@bogon ~]$ echo $x
new
# 因爲變量 y 不存在,所以 x=new
[cfp@bogon ~]$ y=old
# 給變量 y 賦值
[cfp@bogon ~]$ x=${y-new}
# 進行測試
[cfp@bogon ~]$ echo $x
old