例如你不想输入 bc 命令后显示一堆没用的信息,那么可以输入 在交互式环境下使用 bc使用 bc 进行数学计算是非常容易的,像平常一样输入数学表达式,然后按下回车键就可以看到结果,请看下图。 值得一提的是,我们定义了一个变量 n,然后在计算中也使用了 n,可见 bc 是支持变量的。 除了变量,bc 还支持函数、循环结构、分支结构等常见的编程元素,它们和其它编程语言的语法类似。下面我们定义一个求阶乘的函数: 其实我们很少使用这么复杂的功能,大部分情况下还是把 bc 作为普通的数学计算器,求一下表达式的值而已,所以大家不必深究,了解一下即可。 内置变量bc有四个内置变量,我们在计算时会经常用到,如下表所示:
|
【实例1】scale 变量用法举例: 刚开始的时候,10/3 的值为 3,不带小数部分,就是因为 scale 变量的默认值为 0;后边给 scale 指定了一个大于 0 的值,就能看到小数部分了。 【实例2】ibase 和obase 变量用法举例: 注意:obase 要尽量放在 ibase 前面,因为 ibase 设置后,后面的数字都是以 ibase 的进制来换算的。 内置函数除了内置变量,bc 还有一些内置函数,如下表所示:
|
要想使用这些数学函数,在输入 bc 命令时需要使用 在一行中使用多个表达式在前边的例子中,我们基本上是一行一个表达式,这样看起来更加舒服;如果你愿意,也可以将多个表达式放在一行,只要用分号 在 Shell 中使用 bc 计算器在 Shell 脚本中,我们可以借助管道或者输入重定向来使用 bc 计算器。
此处我们并不打算展开讲解管道和重定向,不了解的小伙伴请自行百度。 借助管道使用 bc 计算器如果读者希望直接输出 bc 的计算结果,那么可以使用下面的形式: echo "expression" | bc
使用下面的形式可以将 bc 的计算结果赋值给 Shell 变量: variable=$(echo "expression" | bc) variable 就是变量名。 【实例1】最简单的形式: [jb51.net]$ echo "3*8"|bc 24 [jb51.net]$ ret=$(echo "4+9"|bc) [jb51.net]$ echo $ret 13 【实例2】使用 bc 中的变量: [jb51.net]$ echo "scale=4;3*8/7"|bc 3.4285 [jb51.net]$ echo "scale=4;3*8/7;last*5"|bc 3.4285 17.1425 【实例3】使用 Shell 脚本中的变量: [jb51.net]$ x=4 [jb51.net]$ echo "scale=5;n=$x+2;e(n)"|bc -l 403.42879 在第二条命令中,$x表示使用第一条 Shell 命令中定义的变量,n是在 bc 中定义的新变量,它和 Shell 脚本是没关系的。 【实例4】进制转换: #十进制转十六进制 [mozhiyan@localhost ~]$ m=31 [mozhiyan@localhost ~]$ n=$(echo "obase=16;$m"|bc) [mozhiyan@localhost ~]$ echo $n 1F #十六进制转十进制 [mozhiyan@localhost ~]$ m=1E [mozhiyan@localhost ~]$ n=$(echo "obase=10;ibase=16;$m"|bc) [mozhiyan@localhost ~]$ echo $n 30 借助输入重定向使用 bc 计算器 可以使用下面的形式将 bc 的计算结果赋值给 Shell 变量: variable=$(bc << EOF expressions EOF ) 其中,variable是 Shell 变量名,express是要计算的数学表达式(可以换行,和进入 bc 以后的书写形式一样),EOF是数学表达式的开始和结束标识(你也可以换成其它的名字,比如 aaa、bbb 等)。 请看下面的例子: [jb51.net]$ m=1E [jb51.net]$ n=$(bc << EOF > obase=10; > ibase=16; > print $m > EOF > ) [jb51.net]$ echo $n 30 如果你有大量的数学计算,那么使用输入重定向就比较方便,因为数学表达式可以换行,写起来更加清晰明了。 到此这篇关于Linux bc命令实现数学计算器的文章就介绍到这了,更多相关Linux bc数学计算器内容请搜索社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持社区! | ||||||||||||||||||||||||||||||||||||||||||