Shell脚本中的数学计算
17 March 2017
最近在写Shell脚本时,需要将两个浮点数加起来,将结果赋给一个变量。直接写var=$(( 1.2 + 1.3 ))
发现竟然不行。
原来Shell自身不支持浮点数的计算!
为了在Shell中进行任意的数学计算,可以采用其他工具。
第一种是利用bc
,支持任意精度计算的命令行程序:
var=`echo 1.2 + 1.3 | bc`
另一种是调用其他脚本语言解释器,将计算出的结果返回给Shell:
var=`python -c "print('%.1f' % (1.2 + 1.3))"`
实际上,bc
也是一种“语言”的解释器(与python
实质上是一样),只不过这种语言是专门用来进行计算的。
选用自己熟悉的语言可以方便地控制输出结果的格式。
这其实给我们一种启发:在Unix/Linux系统上,用Shell脚本时不需要局限于Shell语言,系统上有的其他工具(无论是编译好的程序还是其他脚本语言解释器)都可以用来完成任务。 但这样需要考虑所写的脚本在新的系统上能否成功运行的问题。毕竟,只用Shell语言是最可移植的。
如果想要说些什么,欢迎发邮件给我。