1
一、命令介绍
bc命令是一种支持任意精度的交互执行的计算器语言。
二、基本使用
(1)使用方式
• 交互式
[root@cp ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1+1
2
• bc + filename
[root@cp ~]# cat 1.txt
1+1
2*3
[root@cp ~]# bc "1.txt"
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
2
6
• echo + 管道 + bc
[root@cp ~]# echo "1+1" | bc
2
• bc + 重定向
[root@cp ~]# bc < "1.txt"
2
6
[root@cp ~]# bc <<< "1+1"
2
(2)基本运算
+ 加法
[root@cp ~]# bc <<< "5+4"
9
[root@cp ~]# bc <<< "-1+-1"
-2
[root@cp ~]# bc <<< "1.5+1.7"
3.2
- 减法
[root@cp ~]# bc <<< "5-4"
1
* 乘法
[root@cp ~]# bc <<< "5*4"
20
/ 除法
[root@cp ~]# bc <<< "2/4" //为什么 “2/4” 等于0呢,因为bc的内置函数scale默认指定了显示小数点后0位数
0
[root@cp ~]# bc <<< "scale=2;2/4" //我们自定义一下显示小数点后2位,结果小于1的浮点数,0会自动省略。
.50
[root@cp ~]# bc <<< "scale=2;5/4"
1.25
^ 指数
[root@cp ~]# bc <<< "2^4"
16
% 取余
[root@cp ~]# bc <<< "4%2"
0
[root@cp ~]# bc <<< "4%3"
1
(3)特殊变量和内置函数
• 特殊变量
变量名 | 作用 |
---|---|
scale | 定义小数点后的位数 |
ibase | 指定输入的进制数 |
obase | 指定输出的进制数 |
last 或者 . | 存储着最后一个打印数字的值 |
实例演示:
[root@cp ~]# bc <<< "scale=1;2/1"
2.0
[root@cp ~]# bc <<< "scale=2;2/1"
2.00
[root@cp ~]# bc <<< "scale=2;1/2"
.50
[root@cp ~]# bc <<< "ibse=10;obase=2;10" //十进制转二进制
1010
[root@cp ~]# bc <<< "obase=2;10" //默认输入进制为十进制转
1010
[root@cp ~]# bc <<< "obase=2;3"
11
[root@cp ~]# bc <<< "scale=1;2/1;last"
2.0
2.0
[root@cp ~]# bc <<< "scale=1;2/1;."
2.0
2.0
[root@cp ~]# cat 1.txt
1+1
2*3
last //使用.也是一样效果
[root@cp ~]# bc < 1.txt
2
6
6
• 内置函数
名称 | 作用 |
---|---|
length() | 获取有效数字位数 |
scale() | 获取小数点后数字位数 |
sqrt() | 平方根计算 |
read() | 从标准输入中读取数字 |
实例演示:
[root@cp ~]# bc <<< "length(100)"
3
[root@cp ~]# bc <<< "length(1.15)"
3
[root@cp ~]# bc <<< "scale(1.15)"
2
[root@cp ~]# bc <<< "sqrt(100)"
10
[root@cp ~]# bc <<< "sqrt(7)"
2
[root@cp ~]# bc <<< "scale=5;sqrt(7)"
2.64575
1