linux BC命令行计算器

1. 基本用法:

$ bc <<< 5*4
20
$ bc <<< 5+4
9
$ bc <<< 5-4
1
或者
$ echo "5*4" | bc
20
$ echo "5+4" | bc
9
$ echo "5-4" | bc
1

也可以把算式写到文件里面,然后一次计算。

$ cat calcFile 
5+5
6+7

$ bc < calcFile 
10
13

也可以使用HERE 命令:

$ bc << HERE
> 1+4
> 4-1
> 2*4
> HERE
5
3
8

可以使用内置的变量 last 引用上一次的结果:

$ echo "5-4;last+6" | bc
1
7
last 也可以用 点号代替:

$ echo "5-4;.+6" | bc
1
7

2. 浮点数运算:

可以使用scale指定小数点之后的位数(默认为0,即整数)

$ echo "sqrt(10)" | bc
3
$ echo "scale=1;sqrt(10)" | bc
3.1
$ echo "scale=10;sqrt(10)" | bc
3.1622776601

有时候得不到指定的位数:

$ echo "scale=10; 1.25*9" | bc
11.25
此时,可以修改为:

$ echo "scale=10; 1.25*9/1" | bc
11.2500000000

3. 数制转换:

可以使用变量 ibase表示转换前数字的数制;obase表示转换后数字的数制

$ echo 'obase=16;128' | bc
80

$ echo 'ibase=16;obase=A;80' | bc
128
$ echo 'obase=2;128' | bc
10000000
$ echo 'ibase=2;obase=A;10000000' | bc
128

$ echo "obase=10;ibase=16;80" | bc
128

4. 指数运算:

$ echo "5^5" | bc
3125
$ echo "(5^5)^5" | bc
298023223876953125
记得第一个指数运算的结果要添加括号。

5. 基于函数库的运算

bc支持以下函数:

s(x): 正弦函数(x为弧度)

c(x): 余弦函数(x为弧度)

a(x): 反正切函数(结果为弧度)

l(x):  自然对数函数

e(x): 以e为底的指数函数

j(n,x):  贝赛尔函数


此时,bc要加上 -l 参数 (此时,  scale 为20)


计算 log1.5(2) (以 1.5为底,2的对数):

$ echo "l(2)/l(1.5)" | bc -l
1.70951129135145477699

也可以用 awk命令:

$ awk 'BEGIN {printf "%1l.9f\n", log(2)/log(1.5)}'
1.709511291

6. 脚本函数编程:

$ cat calc_prog 
print "Enter a number A\n"; a = read()

print "Enter another number B\n"; b = read()

if (b == a) {

print "B = A\n";

}

if (a < b) {

print "B > A\n";

}

if (a > b) {

print "B < A\n";

}

$ bc -l calc_prog

7. 脚本模拟计算器:

$ cat calc.sh 
#!/bin/bash

bc << END
scale=2
$@
END
$ ./test.sh  1+2
3

参考:

http://mylinuxbook.com/linux-command-line-calculator-bc-examples/

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。