Linux shell 里面的数学计算,AWK是个好的工具。AWK用在数据库型的数据最是适合。不过用来做一些计算,也是非常好的。而且比较清楚。
例如,可以将shell里面的变量 以 -v的方式代入。比如 -v vv=${value} 就是把shell里面的变量value,代入到AWK的变量vv,然后在AWK的主题计算中,就可以直接使用vv变量,无需$,${}"",''等方式来取得变量的值。直接写变量名vv,很爽!
另外,AWK自带很多数学函数,例如log,就是以10为第的对数函数,而不是以e为底自然对数,感觉很是方便!
实例如下:
用于把温度传感器的直接采集数值,转化为摄氏度,是一个带log的算式。先把直接采集值(530)赋给shell变量value,然后计算,最后把计算结果赋给另外一个shell变量ss.
代码如下:
[davidqi@david ~]$ value=530
[davidqi@david ~]$ ss=`awk -v vv=${value} 'BEGIN {print 1/(log((1023-vv)*10000/vv/10000)/3975+1/298.15)-273.15}'`
[davidqi@david ~]$ echo ${ss}
26.6272
其中ss=`。。。`就是把AWK计算结果赋值给变量ss的方式,也很简单。BEGIN{。。。}就是AWK正式重复计算前的预先计算