Shell基礎——Bash的運算符

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 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章