bc 命令简述

前言

shell 脚本里可用 echo $(( expr )) 方式进行简单计算,而对于复杂计算就无能为力。

而这时 bc (Basic Calculator)命令就可以派上用场,本文就介绍下这个命令的用法。

基础用法

bc 命令通过标准输入、文件或交互式(interactive)方式,获取待计算的表达式然后输出结果。

> echo "1+1" | bc
2
> bc -q calc.bc
2
> bc -q
1+1
2

备注:-q 选项表示不显示初始化文字。

变量

bc 支持使用变量,变量标识符以小写字母开头,后面可以为小写字母、数字和下划线。

> bc -q
var_1=1
var_1+var_1
2

大写字母用于代表数值常量,A代表10,按序递增1。

> bc -q
A
10
Z
35

变量未定义初始值为0,如下例子所示:

> bc -q
undefined += 2
undefined
2

内置变量

除了自定义变量,bc 还内置了以下变量:

  • ibase 设置输入进制,默认值为10即十进制;
  • obase 设置输出进制,默认值为10即十进制;
  • scale 设置输出的小数位数,只对除、取余、乘幂有效,默认值为0,使用-l选项开启数学库时默认值为20;
  • last 表示最后一个输出值。

进制转换

通过内置变量可以很方便的进行进制转换,如以下例子将16进制转换为10进制:

> echo "obase=10;ibase=16;FF" | bc
255 

备注:同一行中支持分号分隔多个表达式。

函数

bc 命令支持自定义函数,以关键字 define 开头,如以下例子定义了 sum 函数,对参数a和b相加返回,并在下一行进行了调用:

> bc -q
define sum(a, b) { return a + b; }
sum(1, 1)
2

内置函数

和变量一样,bc 命令也内置了一些数学库函数,使用 -l 选项开启,下面例子用内置的反正切函数(atan)计算圆周率 π:

> bc -l
a(1)*4
3.14159265358979323844

更多内置函数说明可以参考此网址 bc command manual - Math Libary Functions,或使用命令 man bc 查看手册。

语句

bc 也支持语句,例如 if else 语句:

> bc -q
f=0
if (f == 0) {
    print "Equal zero.\n";
} else {
    print "Not equal zero.\n";
}
Equal zero.

其它的 forbreakreturn 等语句的语法和 c 类似,这里就不做介绍,具体可以使用命令 man bc 查看手册里说明。

posted @ 2024-01-25 20:30  ZachLim  阅读(55)  评论(0编辑  收藏  举报