时间:2021-05-22
Bash Shell 内置了对整数运算的支持,但是并不支持浮点运算,而 Linux bc 命令可以很方便的进行浮点运算,当然整数运算也不再话下。
bc 甚至可以称得上是一种编程语言了,它支持变量、数组、输入输出、分支结构、循环结构、函数等基本的编程元素,所以 Linux 手册中是这样来描述 bc 的:
An arbitrary precision calculator language
翻译过来就是“一个任意精度的计算器语言”。
在终端输入bc命令,然后回车即可进入 bc 进行交互式的数学计算。在 Shell 编程中,我们也可以通过管道和输入重定向来使用 bc。
本节我们先学习如何在交互式环境下使用 bc,然后再学习如何在 Shell 编程中使用 bc,这样就易如反掌了。
在终端输入 bc 命令,然后回车,就可以进入 bc,请看下图:
bc 命令还有一些选项,可能你会用到,请看下表。
选项 说明 -h | --help 帮助信息 -v | --version 显示命令版本信息 -l | --mathlib 使用标准数学库 -i | --interactive 强制交互 -w | --warn 显示 POSIX 的警告信息 -s | --standard 使用 POSIX 标准来处理 -q | --quiet 不显示欢迎信息
例如你不想输入 bc 命令后显示一堆没用的信息,那么可以输入bc -q:
使用 bc 进行数学计算是非常容易的,像平常一样输入数学表达式,然后按下回车键就可以看到结果,请看下图。
值得一提的是,我们定义了一个变量 n,然后在计算中也使用了 n,可见 bc 是支持变量的。
除了变量,bc 还支持函数、循环结构、分支结构等常见的编程元素,它们和其它编程语言的语法类似。下面我们定义一个求阶乘的函数:
其实我们很少使用这么复杂的功能,大部分情况下还是把 bc 作为普通的数学计算器,求一下表达式的值而已,所以大家不必深究,了解一下即可。
bc有四个内置变量,我们在计算时会经常用到,如下表所示:
变量名 作 用 scale 指定精度,也即小数点后的位数;默认为 0,也即不使用小数部分。 ibase 指定输入的数字的进制,默认为十进制。 obase 指定输出的数字的进制,默认为十进制。 last 或者 . 表示最近打印的数字
【实例1】scale 变量用法举例:
刚开始的时候,10/3 的值为 3,不带小数部分,就是因为 scale 变量的默认值为 0;后边给 scale 指定了一个大于 0 的值,就能看到小数部分了。
【实例2】ibase 和obase 变量用法举例:
注意:obase 要尽量放在 ibase 前面,因为 ibase 设置后,后面的数字都是以 ibase 的进制来换算的。
除了内置变量,bc 还有一些内置函数,如下表所示:
函数名 作用 s(x) 计算 x 的正弦值,x 是弧度值。 c(x) 计算 x 的余弦值,x 是弧度值。 a(x) 计算 x 的反正切值,返回弧度值。 l(x) 计算 x 的自然对数。 e(x) 求 e 的 x 次方。 j(n, x) 贝塞尔函数,计算从 n 到 x 的阶数。
要想使用这些数学函数,在输入 bc 命令时需要使用-l选项,表示启用数学库。请看下面的例子:
在前边的例子中,我们基本上是一行一个表达式,这样看起来更加舒服;如果你愿意,也可以将多个表达式放在一行,只要用分号;隔开就行。请看下面的例子:
在 Shell 脚本中,我们可以借助管道或者输入重定向来使用 bc 计算器。
此处我们并不打算展开讲解管道和重定向,不了解的小伙伴请自行百度。
如果读者希望直接输出 bc 的计算结果,那么可以使用下面的形式:
echo "expression" | bcexpression就是希望计算的数学表达式,它必须符合 bc 的语法,上面我们已经进行了介绍。在 expression 中,还可以使用 Shell 脚本中的变量。
使用下面的形式可以将 bc 的计算结果赋值给 Shell 变量:
variable=$(echo "expression" | bc)variable 就是变量名。
【实例1】最简单的形式:
【实例2】使用 bc 中的变量:
【实例3】使用 Shell 脚本中的变量:
在第二条命令中,$x表示使用第一条 Shell 命令中定义的变量,n是在 bc 中定义的新变量,它和 Shell 脚本是没关系的。
【实例4】进制转换:
#十进制转十六进制[mozhiyan@localhost ~]$ m=31[mozhiyan@localhost ~]$ n=$(echo "obase=16;$m"|bc)[mozhiyan@localhost ~]$ echo $n1F#十六进制转十进制[mozhiyan@localhost ~]$ m=1E[mozhiyan@localhost ~]$ n=$(echo "obase=10;ibase=16;$m"|bc)[mozhiyan@localhost ~]$ echo $n30借助输入重定向使用 bc 计算器
可以使用下面的形式将 bc 的计算结果赋值给 Shell 变量:
其中,variable是 Shell 变量名,express是要计算的数学表达式(可以换行,和进入 bc 以后的书写形式一样),EOF是数学表达式的开始和结束标识(你也可以换成其它的名字,比如 aaa、bbb 等)。
请看下面的例子:
如果你有大量的数学计算,那么使用输入重定向就比较方便,因为数学表达式可以换行,写起来更加清晰明了。
到此这篇关于Linux bc命令实现数学计算器的文章就介绍到这了,更多相关Linux bc数学计算器内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
linux20个常用命令是: 1、显示日期的指令:“date”。 2、显示日历的指令:“cal”。 3、简单好用的计算器:“bc”。 4、重要的几个热键
大家好,我是良许。在使用Linux时,我们有时会需要做一些计算,那么我们就可能需要用到计算器。在Linux命令行里,有许多计算器工具,这些命令行计算器可以让我们
大家都知道,windows下有个计算器工具,我们在工作生活中经常使用到它。但是,你可知Linux下也同样有个计算器吗?当然,良许说的是命令行下的计算器工具,而不
Linux是一个强大的操作系统,这篇文章收集了6个你可能没有用过的Linux命令,但却相当的有用,供大家参考。1.bc这个Linux命令用于精度比较高的数学运算
Javascript实现计算器:系列文章:JS实现计算器详解及实例代码(一)Javascript实现计算器时间功能详解及实例(二)小型JavaScript计算器