##數學運算
Bash默認為字符串類型,我們可以通過以下幾種方式在Bash中進行數學運算。
* 簡單計算,(())、let和[]
* 高級計算, expr、bc
###1.(())結構
通過(())結構進行數學運算,推薦方式。
```
#!/bin/sh
i=10
echo $i
i=$((i+10)) # 結果為20
echo $i
i=$((i+100)) # 結果為120
echo $i
```
(())還可以使用C風格來設置處理變量。
```
#!/bin/bash
(( a = 23 )) # 以C風格來設置一個值,在"="兩邊可以有空格
echo "a (initial value) = $a"
(( a++ )) # C風格的計算后自增
echo "a (after a++) = $a"
(( a-- )) # C風格的計算后自減
echo "a (after a--) = $a"
(( ++a )) # C風格的計算前自增
echo "a (after ++a) = $a"
(( --a )) # C風格的計算前自減
echo "a (after --a) = $a"
```
(())還可用于進制轉換。
```
# 八進制轉十進制:
((num=0123));
echo $num; # 結果83
((num=8#123));
echo $num; # 結果83
# 十六進制轉十進制:
((num=0xff));
echo $num; # 結果255
((num=16#ff));
echo $num; # 結果255
# 二進制轉十進制
((num=2#11111111));
echo $num; # 結果255
```
###2.let內置命令
let是Bash中的內置命令,我們可以通過它來做數據運算。
```
#!/bin/sh
i=10
echo $i
let i=i+10 # 結果為20
echo $i
let "i=i+100" # 結果為120
echo $i
```
###3.[] 結構
通過[]結構進行數學運算。
```
#!/bin/sh
i=10
echo $i
i=$[i+10] # 結果為20
echo $i
i=$[i+100] # 結果為120
echo $i
```
###4.expr命令
通過expr命令進行數學運算。注意,變量與運算符之間必須使用空格作為分隔符。
```
#!/bin/sh
i=10
echo $i
i=`expr $i + 10` # 結果為20
echo $i
i=`expr $i + 100` # 結果為120
echo $i
```
###5.bc命令
bc命令是一個支持精確的浮點運算的高級計算器,支持數學函數調用。它的功能很強大支持交互式與非交互式計算。
```
#!/bin/sh
i=10
echo $i
j=3;
echo $j
m=`expr $i / $j` # 結果為3
echo $m
n=`echo "scale=9; $i / $j" | bc` # 結果為3.333333333,scale=9保留小數點后9位
echo $n
```
- Introduction
- 1.Shell編程基礎
- 什么是Shell
- 編寫第一個Bash程序
- 2.變量
- 什么是變量
- 變量四種賦值方式
- 指定變量類型
- 變量的類型
- 特殊變量
- 3.Bash符號相關
- Bash符號相關
- 特殊符號
- 數學運算符號
- 4.內建命令與外部命令
- 內建命令與外部命令
- 5.read命令
- read命令
- 6.條件語句
- if..then..fi
- if..then..else..fi
- if..then..elif..fi
- 空命令
- 文件測試符
- 字符串判斷、與、或和非
- []與[[]]符號
- 7.Bash循環 && 分支語句
- while循環語句
- for循環
- for..in循環
- until循環
- select循環
- case分支語句
- 8.正則表達式
- 正則表達式
- 9.子Shell和受限Shell
- 子Shell
- 受限Shell
- 10.函數與函數的加載
- 函數語法與案例
- 遞歸函數
- 函數的加載
- 11.Bash腳本風格
- Bash腳本風格
- 12.Bash腳本調試
- Bash腳本調試
- 13.sed && awk
- sed
- 14.awk
- awk
- 15 Bash雜項 && 案例
- while循環的陷阱
- Bash的生命周期
- IO重定向
- /bin/bash和/bin/sh區別
- 命令雜項
- Shell加密
- 16.10.2.案例
- Bash版回收站
- 17.Bash中文速查表
- 中文速查表