linux 下最强大计算工具 详解
2011-12-16 17:55
274 查看
用途说明
Bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。手册页上说bc是An arbitrary precision calculator language,即一个任意精度的计算语言,注意是一种语言,它提供了一些语法结构,比如条件判断、循环等,可以说是很强大的,但是我在实际中还没有找到需要这个用途的场合 。另外一个用途就是用来进行进制转换。常用参数
一般情况下,我们使用不带任何参数的bc命令。bc
如果需要bc不输出提示信息,可以加上-q参数:
bc -q
如果要使用强大的数学库,比如计算三角函数,需要加上-l参数:
bc -l
因为bc本身是一个命令解释器,要退出它只要直接输入quit回车或者按Ctrl+D终止。
使用示例
示例一 命令行方式使用bc
[root@localhost centos39]# bcbc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
3+4
7
3-4
-1
3*4
12
3/4
0
scale=2;3/4 # 保留小数点精度只对除法、取余、乘幂有效
.75
3/4
.75
3%4
0
scale=0
3%4
3
3^4
81
Ctrl+D
[root@localhost centos39]#
示例二 通过管道使用bc来计算
[root@localhost centos39]# echo 3 * 4 | bc(standard_in) 1: parse error
[root@localhost centos39]# echo "3 * 4" | bc
12
[root@localhost centos39]# echo "scale=7; 355/113" | bc
3.1415929
[root@localhost centos39]#
示例三 进制转换
[root@rhel55 ~]# echo "ibase=16; FFFF" | bc65535
[root@rhel55 ~]# echo "obase=16; 1000" | bc
3E8
[root@rhel55 ~]#
示例四 将多个表达式写在一个文件中一起计算
[root@rhel55 ~]# cat test.bc123*321
123/321
scale=4;123/321
[root@rhel55 ~]# bc test.bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
39483
0
.3831
Ctrl+D
[root@rhel55 ~]#
[root@rhel55 ~]# cat test.bc | bc
39483
0
.3831
[root@rhel55 ~]#
示例五 一个计算三角形面积的Bash脚本
先复习一下初中的知识:b表示三角形的底,h表示三角形的高,那么三角形的面积计算公式是b*h/2 。文件 :area_of_triangle.sh
Bash代码
#!/bin/bash
# Shell program/script to read the base and height of a traingle and find its area
# -------------------------------------------------------------------------
# Copyright (c) 2005 nixCraft project <http://cyberciti.biz/fb/>
# This script is licensed under GNU GPL version 2.0 or above
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------
# Formula info: http://www.mste.uiuc.edu/dildine/heron/triarea.html
# Area=(1/2) x Base x Height
echo -n "Enter base of a triangle : "
read b
echo -n "Enter height of a triangle : "
read h
# calculate it and display back
area=$(echo "scale=2;(1/2) * $b * $h"|bc)
echo "Area of a triangle is $area"
#!/bin/bash # Shell program/script to read the base and height of a traingle and find its area # ------------------------------------------------------------------------- # Copyright (c) 2005 nixCraft project <http://cyberciti.biz/fb/> # This script is licensed under GNU GPL version 2.0 or above # ------------------------------------------------------------------------- # This script is part of nixCraft shell script collection (NSSC) # Visit http://bash.cyberciti.biz/ for more information. # ------------------------------------------------------------------------- # Formula info: http://www.mste.uiuc.edu/dildine/heron/triarea.html # Area=(1/2) x Base x Height echo -n "Enter base of a triangle : " read b echo -n "Enter height of a triangle : " read h # calculate it and display back area=$(echo "scale=2;(1/2) * $b * $h"|bc) echo "Area of a triangle is $area"
[root@smsgw academic]# ./area_of_triangle.sh
Enter base of a triangle : 123
Enter height of a triangle : 321
Area of a triangle is 19741.50
[root@smsgw academic]#
示例六 使用bc命令的脚本片段
Bash代码 # usage: calc_sum <num1> <num2>
# 计算两个数的和
calc_sum()
{
bc -q <<EOF
$1+$2
EOF
}
# usage: calc_free <count>
# 计算费用,单价0.05元
calc_fee()
{
bc -q <<EOF
0.05*$1
EOF
}
# usage: calc_sum <num1> <num2> # 计算两个数的和 calc_sum() { bc -q <<EOF $1+$2 EOF } # usage: calc_free <count> # 计算费用,单价0.05元 calc_fee() { bc -q <<EOF 0.05*$1 EOF }
将以上代码粘贴到终端。
[root@web ~]# # usage: calc_sum <num1> <num2>
[root@web ~]# # 计算两个数的和
[root@web ~]# calc_sum()
> {
> bc -q <<EOF
> $1+$2
> EOF
> }
[root@web ~]#
[root@web ~]# # usage: calc_free <count>
[root@web ~]# # 计算费用,单价0.05元
[root@web ~]# calc_fee()
> {
> bc -q <<EOF
> 0.05*$1
> EOF
> }
[root@web ~]#
[root@web ~]#
[root@web ~]# calc_sum 123 321
444
[root@web ~]# calc_fee 1000
50.00
[root@web ~]#
示例七 使用数学库
有文章称可以计算100位的圆周率pi值。[root@web ~]# echo "scale=100; a(1)*4" | bc
Runtime error (func=(main), adr=11): Function a not defined.
[root@web ~]# echo "scale=100; a(1)*4" | bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
8164062862089986280348253421170676
[root@web ~]#
相关文章推荐
- expr命令_Linux expr 命令用法详解:一款表达式计算工具
- md5sum命令_Linux md5sum 命令用法详解:计算和校验文件报文摘要的工具程序
- linux下nc命令参数及用法详解--功能超级强大的网络工具netcat
- Linux下强大的Axel下载工具
- Linux中文本处理工具之cut命令详解
- rcconf命令_Linux rcconf 命令用法详解:Debian Linux下的运行等级服务配置工具
- iotop命令_Linux iotop 命令用法详解:用来监视磁盘I/O使用状况的工具
- linux基础--awk文本分析工具详解
- 详解Linux下auto工具制作Makefile源码包(制作篇)
- Linux下的CPU利用率计算原理详解
- Linux下的CPU利用率计算原理详解
- Linux网络状态工具ss命令使用详解
- Linux抓包工具tcpdump详解
- Linux监控工具vmstat命令详解
- Linux系统下常用性能分析工具 top命令详解
- Linux下同步工具sersync+rsync使用详解【实战篇】
- Linux系统中nmap网络扫描工具的命令用法详解
- Linux网络状态工具ss命令使用详解
- Linux监控工具vmstat命令详解
- Linux下暴力破解工具Hydra详解