Linux bc命令详解:一款数学计算器
bc 甚至可以称得上是一种编程语言了,它支持变量、数组、输入输出、分支结构、循环结构、函数等基本的编程元素,所以 Linux 手册中是这样来描述 bc 的:
An arbitrary precision calculator language
翻译过来就是 一个任意精度的计算器语言 。
在终端输入bc命令,然后回车即可进入 bc 进行交互式的数学计算。在 Shell 编程中,我们也可以通过管道和输入重定向来使用 bc。
本节我们先学习如何在交互式环境下使用 bc,然后再学习如何在 Shell 编程中使用 bc,这样就易如反掌了。
从终端进入 bc在终端输入 bc 命令,然后回车,就可以进入 bc,请看下图:
bc 命令还有一些选项,可能你会用到,请看下表。
在交互式环境下使用 bc
使用 bc 进行数学计算是非常容易的,像平常一样输入数学表达式,然后按下回车键就可以看到结果,请看下图。
值得一提的是,我们定义了一个变量 n,然后在计算中也使用了 n,可见 bc 是支持变量的。
除了变量,bc 还支持函数、循环结构、分支结构等常见的编程元素,它们和其它编程语言的语法类似。下面我们定义一个求阶乘的函数:
其实我们很少使用这么复杂的功能,大部分情况下还是把 bc 作为普通的数学计算器,求一下表达式的值而已,所以大家不必深究,了解一下即可。
bc 有四个内置变量,我们在计算时会经常用到,如下表所示:
刚开始的时候,10/3 的值为 3,不带小数部分,就是因为 scale 变量的默认值为 0;后边给 scale 指定了一个大于 0 的值,就能看到小数部分了。
【实例2】ibase 和 obase 变量用法举例:
注意:obase 要尽量放在 ibase 前面,因为 ibase 设置后,后面的数字都是以 ibase 的进制来换算的。
除了内置变量,bc 还有一些内置函数,如下表所示:
要想使用这些数学函数,在输入 bc 命令时需要使用-l选项,表示启用数学库。请看下面的例子:
在一行中使用多个表达式在前边的例子中,我们基本上是一行一个表达式,这样看起来更加舒服;如果你愿意,也可以将多个表达式放在一行,只要用分号;隔开就行。请看下面的例子:
在 Shell 中使用 bc 计算器在 Shell 脚本中,我们可以借助管道或者输入重定向来使用 bc 计算器。
管道是 Linux 进程间的一种通信机制,它可以将前一个命令(进程)的输出作为下一个命令(进程)的输入,两个命令之间使用竖线|分隔。 通常情况下,一个命令从终端获得用户输入的内容,如果让它从其他地方(比如文件)获得输入,那么就需要重定向。
此处我们并不打算展开讲解管道和重定向,不了解的小伙伴请自行百度。
借助管道使用 bc 计算器如果读者希望直接输出 bc 的计算结果,那么可以使用下面的形式:
echo expression | bc
expression就是希望计算的数学表达式,它必须符合 bc 的语法,上面我们已经进行了介绍。在 expression 中,还可以使用 Shell 脚本中的变量。
使用下面的形式可以将 bc 的计算结果赋值给 Shell 变量:
variable=$(echo expression | bc)
variable 就是变量名。
【实例1】最简单的形式:
[c.biancheng.net]$ echo 3*8 |bc [c.biancheng.net]$ ret=$(echo 4+9 |bc) [c.biancheng.net]$ echo $ret 13
【实例2】使用 bc 中的变量:
[c.biancheng.net]$ echo scale=4;3*8/7 |bc 3.4285 [c.biancheng.net]$ echo scale=4;3*8/7;last*5 |bc 3.4285 17.1425
【实例3】使用 Shell 脚本中的变量:
[c.biancheng.net]$ x=4 [c.biancheng.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 #十六进制转十进制 [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 等)。
请看下面的例子:
[c.biancheng.net]$ m=1E [c.biancheng.net]$ n=$(bc EOF obase=10; ibase=16; print $m [c.biancheng.net]$ echo $n 30
如果你有大量的数学计算,那么使用输入重定向就比较方便,因为数学表达式可以换行,写起来更加清晰明了。
21234.html
linux相关文章
- linux中权限管理命令详解(chmod/chown/chgrp/unmask)
- 在Linux上安装微信,实现联系全球联系方式(linux上安装微信)
- Linux命令管理实时查看日志记录(linux命令日志)
- Linux MySQL数据库重启指令教程(linuxmysql重启命令)
- 命令Linux环境下Ping命令的使用(linux的ping)
- Linux中运用C语言的调试技巧(linux下c语言调试)
- Linux 运维知识普及:让每个人都拥抱 Linux(学linux运维)
- Linux系统:鬼魅般的聪颖机器(linux系统ghost)
- Linux系统时间调整指南(linux系统时间调整)
- 掌握Linux下如何修改时间(linux修改时间命令)
- 实现Linux系统安全优化的全攻略(linux系统安全优化)
- 探索Linux文件的类型(linux文件的类型)
- 命令Linux中的Touch命令:创建文件的有效途径(linux的touch)
- Linux串口设置指南:简易5步快速设置(linux串口设置命令)
- Linux下弹出光盘的命令操作(linux弹出光盘命令)
- Linux命令目录大全:25个关键字汇总(linux命令所在目录)
- Linux编程中的输入输出重定向技巧(linux编程重定向)
- 学会Linux中强大的cat命令,轻松处理文件内容(linux中的cat命令)
- 选项利用Linux中a选项进行高效操作(linux中-a)
- 掌握 Linux 系统中查看路径的命令(linux显示路径命令)
- Linux环境下的端口重定向操作详解(linux端口重定向)
- 如何在Linux下安装和配置显卡驱动?(linux下显卡驱动)
- Linux命令新变革:一探改变源起和发展趋势(linux改变命令)
- Linux添加网卡:简单几步就能实现!(linux 添加网卡命令)
- 「Linux常用但不能使用的命令」(linux不能使用的命令)
- Linux系统中的Ping命令(linux系统ping)
- Linux系统安装流程介绍(linux 系统如何安装)