linux-shell編程下的數學運算
前言
在Linux Shell編程中,一般默認輸出的都是字元串,如果需要執行數學運算的話就需要使用let或者expr等進行運算,而且這個只能進行整數運行;如果需要有浮點數運行就需要bc或者awk來現實。
整數運算
1、使用let命令進行賦值
#!/bin/bash
a=1
b=2
let c=a+b
echo a+b=c=$c
輸出:
a+b=c=3
注釋:let幾乎支持所有的運算符,包括括弧優先、++、--等;參數可以不需要$,就可取到值進行運算;支持方冪運算let "a=3**2";只支持整數運算。
2、使用expr進行運算
#!/bin/bash
a=22
b=33
echo $(expr $a + $b)
輸出:
55
注釋:需要$取變數值,注意運算符(比如:+)左右兩邊需要有空格;支持的操作符有: |、&、=、>、+、-、*、/、%;expr支持的操作符中所在使用時需用進行轉義的有:|、&、=、>、*;只支持整數運算。
3、使用$[]運算
#!/bin/bash
a=32
b=33
echo $[$a+$b]
輸出:
65
注釋:$[]將中括弧內的表達式作為數學運算先計算結果再輸出;對$[]中的變數進行訪問時前面需要加$;$[]支持的運算符與let相同,但也只支持整數運算。
4、使用(())進行處理
#!/bin/bash
a=33
b=44
echo a+b=$((a+b))
輸出:
a+b=77
注釋: (())的使用方法與let完全相同;但是可以直接輸出結果。
總結:以上就是對整數的處理方法,個人習慣用最後一種方式。
浮點數運算
上面的兩種發放如果遇到有小數點就會報錯。因此浮點數數運行就需要其他命令支持了。
1、bc命令行計算器,可以進行整數運算和浮點數運算
#!/bin/bash
echo $( echo "scale=2; 10/3" | bc)
輸出:
3.33
注釋:scale是指定精度,而且只有在除法的時候才有生效,其他都是安裝原來都有幾位就輸出幾位;bc支持除了位操作的所有運算。
2、awk運算
#!/bin/bash
a=1.1
b=3.222
echo $(awk -v a=$a -v b=$b "BEGIN")
輸出:
4.32
注釋:awk的變數跟shell的變數是獨立的,所以需要使用-v進行變數傳遞;支持輸出格式化,根據實際需要進行格式化輸出;awk內置有log、sqr、cos、sin等等函數。
總結:小數運算的時候,還是習慣使用awk,bc輸出不能根據自己的需要進行格式化。
總結
awk是一種文本處理工具,同時也是一種程序設計語言,作為一種程序設計語言。因此進行浮點數計算並需要進行判斷的時候,建議還是使用awk進行處理。


TAG:linux運維菜 |