Shell程式設計-04-Shell中變數數值計算
算術運算子
在任何一門形式的語言中均會存在算術運算的情況,Shell常見的運算子如下所示:
運算子 | 含義 |
---|---|
+ - * / % | 加 減 乘 除 求餘 |
** | 冪運算 |
++ -- | 自增 自減 |
&& || ! | 與(and) 或(or) 非(取反) |
< <= > >= == != | 小於 小於等於 大於 大於等於 等於 不等於 |
<< >> | 左移位 右移位 |
~ | & ^ | 按位取反 按位異或 按位與 按位或 |
= += -= *= /= %= | 如a+=1與a=a+1相同 |
算術運算命令
運算命令 | 含義 |
---|---|
(()) | 整數運算,效率很高 |
let | 整數運算,類似於(()) |
expr | 整數運算,另外還有很多額外功能 |
bc | Linux中的計算器,適合整數及小數運算 |
$[] | 整數運算 |
awk | 既可用於整數運算,也可用於小數運算 |
declare | 定義變數值和屬性,-i 引數可以用於定義整型變數並進行運算 |
數值運算用法
(())用法
雙小括號常用於數值運算和數值比較,因其效率很高,用法靈活,因此是常用的運算之一。
示例 | 含義 | 備註 |
---|---|---|
((i=i+1)) | 運算後並進行賦值,即先進行i+1計算並將該值賦值給i | 只能使用echo((i=i+1))進行輸出||i=((i=i+1))進行輸出||i=((i+1)) |
((2>1&&8>3)) | 進行比較後再進行邏輯運算 | 常用於條件判斷 |
echo $((4+2)) | 直接進行計算並輸出結果 |
(())用法示例
[root@localhost ~]# echo $((90-12));echo $((80+12)) # 基本運算7892[root@localhost ~]# ((a=100))[root@localhost ~]# ((a*=2))[root@localhost ~]# echo $a # 輸出運算結果200[root@localhost ~]# ((a=100+2**10-200%100)) # 複雜運算[root@localhost ~]# echo $a1124[root@localhost ~]# a=$((50**2*2+2500)) # 運算並進行賦值[root@localhost ~]# echo $a7500[root@localhost ~]# a=100[root@localhost ~]# echo $((a++));echo $((++a)) # 自增運算100102[root@localhost ~]# echo $((a**2))10404[root@localhost ~]# echo $((2==2)) # 比較運算1 # 1:代表結果為真[root@localhost ~]# echo $((2>2))0 # 0:代表結果為假
++/--:如果++/--在變數前面,則代表先進行運算再輸出結果,如果++/--在變數後面,則先輸出結果再進行運算
(()):在執行命令時不需要新增,直接使用((4+3))即可,如果輸出進行變數賦值,則需要新增,直接使用((4+3))即可,如果輸出進行變數賦值,則需要新增,如使用a=$((4+3))
(())中所有字元中有無空格均不受影響
let用法
let的語法格式如下所示:
let var=value
let用法示例
[root@localhost ~]# a=8[root@localhost ~]# b=9[root@localhost ~]# c=$a+$b[root@localhost ~]# echo $c8+9 # 進行字串連線[root@localhost ~]# let c=$a+$b[root@localhost ~]# echo $c17 # 進行相加
let let c=a+a+b等同於((c=a+a+b))
expr用法
expr的語法格式如下所示:
expr 表示式
expr用法示例
[root@localhost ~]# expr 4+8; expr 2*54+82*5[root@localhost ~]# expr 4 + 8; expr 2 * 5 # 注意空格1210[root@localhost ~]# a=100[root@localhost ~]# b=200[root@localhost ~]# c=`expr $a + $b`[root@localhost ~]# echo $c300[root@localhost ~]# a=2[root@localhost ~]# b=5[root@localhost ~]# c=`expr $a * $b`[root@localhost ~]# echo $c10
使用expr的注意事項如下所示:
運算子與計算項之間左右間必須要有一個空格,否則會出現報錯
使用*需要進行轉義符
bc用法
bc是Linux中的計算器,可作為命令列計算工具使用
bc用法示例
[root@localhost ~]# bcbc 1.06.95Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY.For details type `warranty'.1+231.0369+2.0147893.051689[root@localhost ~]# echo 100+200 | bc # 透過管道進行計算300[root@localhost ~]# a=250[root@localhost ~]# b=360[root@localhost ~]# c=`echo $a + $b | bc`[root@localhost ~]# echo $c610
awk用法示例
[root@localhost ~]# echo "12.36 12.36" | awk '{print $1+$2}'24.72[root@localhost ~]# echo "12.36 12.36" | awk '{print $1*$2+$2}'165.13[root@localhost ~]# echo "12.36 12.36" | awk '{print $1*($2+$2)}'305.539[root@localhost ~]# echo "10 100" | awk '{print $1*($2+$2)}'2000
declare用法
declare的語法格式如下所示:
declare -i var=value
declare用法示例
[root@localhost ~]# declare -i a=120 b=130[root@localhost ~]# a=a+b #因為已經申明為整數,可以直接進行運算[root@localhost ~]# echo $a250
$[]用法示例
[root@localhost ~]# a=120[root@localhost ~]# b=1290[root@localhost ~]# a=$[a+b][root@localhost ~]# echo $a1410[root@localhost ~]# echo $[5/3]1[root@localhost ~]# echo $[5%3]2
read用法示例
[root@localhost ~]# read -t 20 -p "Input 3 number:" a b cInput 3 number:1 2 3[root@localhost ~]# echo $a $b $c # 透過使用者輸入傳遞變數賦值1 2 3
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1343/viewspace-2817178/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Shell程式設計-shell變數1程式設計變數
- Linux Shell程式設計(7)——變數賦值Linux程式設計變數賦值
- shell程式設計–bash變數程式設計變數
- shell程式設計(一)變數程式設計變數
- Shell程式設計-02-Shell變數程式設計變數
- Shell 程式設計 : 數值,字元,字串程式設計字元字串
- shell程式設計-高階變數程式設計變數
- Shell程式設計-shell變數2-位置變數和預定義變數程式設計變數
- shell程式設計–bash變數介紹程式設計變數
- Shell程式設計規範與變數程式設計變數
- shell程式設計學習筆記(二):Shell中變數的使用程式設計筆記變數
- 01 shell程式設計之變數定義程式設計變數
- 01 shell程式設計規範與變數程式設計變數
- Linux Shell程式設計(10)——引用變數Linux程式設計變數
- Linux shell程式設計(一)shell指令碼中的變數詳解Linux程式設計指令碼變數
- Linux Shell程式設計(6)——變數替換Linux程式設計變數
- Linux Shell程式設計(8)——變數詳解Linux程式設計變數
- Linux Shell程式設計(14)——內部變數Linux程式設計變數
- shell程式設計02——變數定義與使用程式設計變數
- Shell階段02 shell變數運算(整數運算/小數運算), shell變數案例變數
- shell程式設計Bash中對變數的操作方法談(轉)程式設計變數
- shell指令碼程式設計學習筆記——變數指令碼程式設計筆記變數
- shell程式設計之環境變數配置檔案程式設計變數
- Linux Shell程式設計(9)——特殊變數型別Linux程式設計變數型別
- 計算int變數中攸多少bit的值是1變數
- Octave 數值計算
- Shell變數型別有哪些?linux運維shell程式設計變數型別Linux運維程式設計
- 【shell程式設計】目錄檔案計數程式設計
- shell中變數的取值與賦值變數賦值
- 【數值計算方法】數值積分&微分
- SHELL之數值運算
- 數值計算基礎
- 【趣解程式設計】變數程式設計變數
- Shell程式設計基礎學習之三:變數和test程式設計變數
- shell 變數賦值問題變數賦值
- shell變數命名與賦值變數賦值
- MapReduce程式設計基礎(二)——數值概要(計算最大值、最小值、平均值)程式設計
- Linux從入門到精通系列之SHELL程式設計變數與四則運算Linux程式設計變數