Bash 不能处理浮点运算, 并且缺乏特定的一些操作,这些操作都是一些重要的计算功能.幸运的是, bc 可以解决这个问题.bc 不仅仅是个多功能灵活的精确的工具, 而且它还提供许多编程语言才具备的一些方便的功能. 因为它是一个完整的 UNIX 工具, 所以它可以用在管道中, bc 在脚本中也是很常用的.

这里有一个简单的使用 bc 命令的模版可以用来在计算脚本中的变量. 用在命令替换 中.

variable=$(echo "OPTIONS; OPERATIONS" | bc)

如:interest_rate=$(echo "scale=9; $interest_r/12 + 1.0" | bc)

以前一直以为bc做了不了浮点运算,虽然他能结算类似
13.4*45.6
的乘法,但是在计算除法的时候,无论你输入
5/3
还是
5/3.0
得到的结果都是
1

我也没有去看man手册,今天无意中发现了ibase这个变量,是bc使用的一个变量,表示输入的数字的进制,比如ibase=8,表示你输入的数是8进制的。
这让我很好奇,于是去看了man手册,原来他是可以做浮点除法的,只是默认不输出小数点后面的值,它同样采用了一个变量来控制--scale,其值表示输出多少位小数。另外一个和ibase对应的变量是obase,表示结果输出采用什么进制,默认是10进制。
给出几个例子,大家一看就明白了。

[root@lancy bin]# echo "2.5*3.4" |bc
8.5
[root@lancy bin]# echo "5/3; 5/3.1" |bc
1
1
[root@lancy bin]# echo "scale=2; 5/3" |bc
1.66
[root@lancy bin]# echo "ibase=10;obase=2; 4*6"|bc
11000
[root@lancy bin]# echo "ibase=2; 110*101; obase=10" |bc
30
[root@lancy bin]# echo "ibase=2; 11110; obase=2" |bc
30

转载于:https://www.cnblogs.com/lingepeiyong/archive/2011/12/27/2303642.html

shell中用bc进行浮点运算(转帖)相关推荐

  1. shell中用grep查找并且不输出_shell中grep命令详解

    用'grep'搜索文本文件如果您要在几个文本文件中查找一字符串,可以使用'grep'命令.'grep'在文本中搜索指定的字符串.举个例子:假设您正在'/usr/src/linux/Documentat ...

  2. shell中用grep查找并且不输出_grep awk 搜索日志常用命令

    0 grep 常用参数 --color:高亮显示匹配到的字符串 -v:显示不能被pattern匹配到的 -i:忽略字符大小写 -o:仅显示匹配到的字符串 -q:静默模式,不输出任何信息 -A#:aft ...

  3. shell中用grep查找并且不输出_Linux中用 grep查找特定进程,屏蔽grep进程本身(也就是不出现grep --color=auto)...

    2020年6月8日09:03:12更新 一些细节. 日常操作linux 中,通常在使用 ps命令后 用管道连接 查询特定进程会显示 grep进程本身. 如下: 1 [root@ecs-linux-by ...

  4. shell中用while循环实现连加操作

    #!/bin/bash read COUNT a=1 add=0 while [ $a -le $COUNT ] do add=`expr $add + $a` a=`expr $a + 1` don ...

  5. linux shell 算术运算{expr、bc、dc、(( ))和[ ]}

    1expr expr在使用中要注意一些书写,如表达式中量和运算符号之间的空格及一些运算符号需要转义,还有一点需要记住,expr只适用于整数之间的运算! 1.1表达式 expr的help文档中关于表达式 ...

  6. shell脚本编程大全

    文章目录 一.命令行 二.shell 三.文件系统 四.shell命令 五.shell的父子关系 六.内建命令 七.环境变量 八.文件系统权限 九.管理文件系统 十.构建基本shell脚本 十一.使用 ...

  7. Shell脚本示例代码

    1. echo_printf_usage.sh: echo和printf的用法 #! /bin/bash# echo和printf的用法# echo是用于终端打印的基本命令.在默认情况下,echo在每 ...

  8. Shell : 基本语法

    一 什么是shell script: 将OS命令堆积到可执行的文件里,由上至下的顺序执行文本里的OS命令 就是脚本了. 再加上些智能(条件/流控)控制,就变成了智能化脚本了. 二 变量: (1)为何要 ...

  9. Shell第三篇:基本语法

    一 什么是shell script 将OS命令堆积到可执行的文件里,由上至下的顺序执行文本里的OS命令 就是脚本了. 再加上些智能(条件/流控)控制,就变成了智能化脚本了. 二 变量 part1 为何 ...

最新文章

  1. this指向undefined uiapp_JavaScript深入之史上最全5种this绑定全面解析
  2. html css 知识回顾2
  3. java jsonobject 转对象_解析JSON中JSONObject的高级使用
  4. 大牛用SSM框架实现了支付宝的支付功能,满满干货指导
  5. java final date_Java 8新特性之Date/Time(八恶人-4)
  6. 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  7. vs矩形框边框线显示被选中的区域;_Excel中,重复的数据高亮显示,如何快速删去?...
  8. 软件工程结对项目:四则运算web
  9. HDU 4003 Find Metal Mineral
  10. Win7+OpenCV2.4.10+VS2010安装教程
  11. 斯皮尔曼相关系数计算的python代码
  12. java 临时文件_在Java中使用临时文件/文件夹
  13. #用PYTHON绘画五角星
  14. QPython+uiautomator2安卓手机自动化脚本编写
  15. Dalvik虚拟机探析
  16. VPN(Virtual privacte network)浅谈
  17. 使用wintogo在移动硬盘上安装windows10系统
  18. The XOR Largest Pair(算法竞赛进阶指南 P72,Trie)
  19. SynRM学习(1)——基本结构、原理、模型与方程
  20. QT + VS + C++ <Qtablewidget>

热门文章

  1. 解决IE10以下对象不支持“bind“属性或方法
  2. 字符和编码之间的转换(Python)
  3. Hadoop基本原理之一:MapReduce
  4. pandas使用get_dummies进行one-hot编码
  5. 图网络中的社群及社群发现算法
  6. 推荐系统遇上深度学习(二十)-贝叶斯个性化排序算法原理及实战
  7. Elasticsearch常用工具清单
  8. java使用Crawler4j开发爬虫
  9. 9个高招,让企业WiFi速度飞起来!
  10. JBPM学习(一):实现一个简单的工作流例子全过程