专栏首页LINUX阅码场Shell脚本处理浮点数的运算和比较实例

Shell脚本处理浮点数的运算和比较实例

这篇文章主要介绍了Shell脚本处理浮点数的运算和比较实例,文中分别使用了bc或awk实现,需要的朋友可以参考下。

通过top命令看到的进程的CPU、内存的使用率的百分比是一个浮点数,我需要在写脚本时对其进行处理,所以学习了一些,总结如下。

其实,Shell(这里是Bash)本身不具备处理浮点计算的能力,但是可以使用“bc”这个高精度的计算器工具来帮助,另外,也可以在Bash中调用“awk”脚本来处理浮点运算。

1. 用bc来处理计算(包括整型和浮点计算) bc – An arbitrary precision calculator language (1). 通常在Bash脚本中使用bc的范例格式为: variable=$(echo “OPTIONS; OPERATIONS” | bc [options]) 即:echo “[选项];操作” | bc [选项] (2). 在下面的脚本中,提到在第一个选项中,“scale”变量表示输出中小数点后的精度,可以用于控制计算结果的精度;“ibase”和“obase”分别表示输入和输出数据的进制,可以用于数值进制的转换。 (3). 浮点数的比较,如“if [ $(echo "$big > $small" | bc) -eq 1 ]”,将一个逻辑判断式用管道传给bc。如果结果为真则输出1,否则输出0,然后就可以利用这个结果进行进一步的操作了。 (4). bc本来是用一个文件作为输入进行计算的(后面也有演示),所以可以将很复杂的计算写到文件中,然后让bc工具去处理到处计算结果。 注意一下:在使用除法运算符/时,要想保留小数,需要自己设置scale,否则默认时scale,小数点后时0位。 2. 使用awk来处理浮点计算和浮点数比较

不解释过多了,写了示例脚本如下,看懂了这个就会知道怎么处理浮点计算和浮点数比较了。

执行的结果如下:

另外,bc处理一个文件中的计算逻辑,演示如下:

bc是强大的工具,请“man bc”查看详情;同样,请“man awk”。


本文分享自微信公众号 - Linux阅码场(LinuxDev)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux查看服务器带宽

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    周小董
  • Linux 下安装ClamAV查毒软件

    echo '30 2 * * 6 /bin/bash /home/scripts/check_clamav.sh' >> /var/spool/cron/roo...

    二狗不要跑
  • Linux中设置定期备份oracle数据库

    昨天装好了oracle,今天尝试一下自动备份,我这两天装linux和oracle的目的就是这个。

    明年我18
  • zookeeper集群和kafka集群及nginx-kafka整合搭建

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    suveng
  • 笔记:Docker命令自动补全

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    耕耘实录
  • 关于el-dialog,我更推荐的用法

    最近的项目里用上了vue和element-ui。vue这种轻量级渐进式框架的舒适自不必说,但一直困扰着我的,是如何方便又优雅的弹出模态dialog...

    明年我18
  • Linux下检测程序的md5值异常自动报警的脚本

    有一次办公室的测试服务器由于开启了对外访问权限,开启了tomcat管理页面,且设置了个弱口令。这3个因素同时成立了,没几天被不速之客放了个***。事后随未造成严...

    二狗不要跑
  • centos minimal 需要安装的工具(仅供参考)

    作者:Ryan 链接:https://www.zhihu.com/question/25126650/answer/152530370 来源:知乎 ...

    suveng
  • Linux中执行shell脚本的4种方法总结

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    于小勇
  • 将普通用户添加到sudo组

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    suveng

扫码关注云+社区

领取腾讯云代金券