bash shell中的數學計算


簡介

在寫shell腳本的時候會用到很多的數學運算,簡單的一個游標+1 -1, 或者更多一點的浮點運算等,shell中數學計算稍麻煩,我想每個人都試過var=1+1 或者var=$xxx+1這類錯誤。 下面對shell中做數學計算小做總結

示例

 

  • 使用expr整數運算
> var=1
> var=`expr $var + 1`
> echo $var
2

其他的減乘除類似, 要注意乘法中的*號需要做轉義\*即可

  • 使用bash內建命令let
> var=2
> let "var=var+1"
> echo $var
3
> let "var=(2+2-1)/2" 
> echo $var
1

 

  • 使用大括號或者小括號
> var=3
> var=$((var+1))
> echo $var
4
> var=$[var+1]
> echo $var
5

 

  • 浮點運算可以用bc或者awk等程序

bc更常用, 對運算來說也更好用一些,可以直接命令行使用:

> bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
1+1
2
1+1.1
2.1
1.1212*1.12
1.2557

也可以在標准輸入作為輸入,bc會把結果輸出到標准輸出:

> echo "2+1-5*1.111" | bc
-2.555

還可以用here-doc的方式把表達式傳給bc

> bc <<< "1+2+3+3.3333" 
9.3333

 

bc在計算上還有很多強大的功能, 具體信息可以看下manpage,比如scale

> echo "scale=1;(1/3)" | bc 
.3
> echo "scale=10;(1/3)" | bc
.3333333333

 

awk也可以做算數計算,也支持浮點計算:

> var=1
> var=`echo "$var 5"|awk '{printf("%g",$1+$2)}'` 
> echo $var
6

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM