簡介
在寫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