bc:

bc 是一种高精度的可交互执行的计算机语言。它在一些浮点数的运算中应用广泛。

一般情况下我们直接输入 bc ,便可进入其工作环境。当然,它还有其他的参数

-h

显示帮助信息并退出

-i

强制进入交互模式

-l

定义了标准的数学库

-w

使用扩展时给出警告

-s

使用标准语言

-q

不打印欢迎信息

-v

打印版本信息并退出

在bc中大多数的元素是数字,他们都有两种属性:长度与精度(小数点位数)

bc有4中特殊的变量

scale

精度(小数点之后的位数)

ibase

输入进制数

obase

输出进制数

last

存储上个指令输出的结果

注释: /*……*/ 或者 #

支持的变量(var)与表达式(expr)

++/-- var

先加(减)后取值

var ++/--

先取值后加减

-expr

取反

expr+/-/*///%/^expr

加减乘除求余乘方

(expr)

布尔值

var=expr

 

var<op>= expr

var=var<op>expr

expr1 </<=/>/>=/==/!=/expr2

判断语句

!expr

取反

expr &&/|| expr

逻辑运算

length( expression )

计算长度

read()

读取输入

scale( expression )

精确度?

sqrt( expression )

平方根

可调用的语句

print " ** "

打印

{ 语句集合 }

 

if (expression ) ** [else **]

条件判断

while( expression ) **

循环

for([ exp1] ;[exp2] ; [exp3]) **

循环

break

可跳出循环

continue

进行下次循环

halt

退出bc

return

函数返回

其他

limits

显示limits

quit

退出

warranty

显示bc相关信息

函数定义方法

define name ( parameters ) { newline

auto_list statement_list } 这个部分请看实例2或者man帮助来进一步了解。

关于数组 name[]

数学库函数

s(x)

sin(x) x是弧度

c(x)

cos(x)

a(x)

arctan(x)

l(x)

ln(x)

e(x)

ex

j(n,x)

贝塞尔函数的整数n x。

实例1

计算圆周率

[linux@linux ~]$ pi=$(echo "scale=10; 4*a(1)" | bc -l)

[linux@linux ~]$ echo $pi

3.1415926532

实例2

scale = 20

/* Uses the fact that e^x = (e^(x/2))^2

When x is small enough, we use the series:

e^x = 1 + x + x^2/2! + x^3/3! + ...

*/

define e(x) {

auto a, d, e, f, i, m, v, z

/* Check the sign of x. */

if (x<0) {

m = 1

x = -x

}

/* Precondition x. */

z = scale;

scale = 4 + z + .44*x;

while (x > 1) {

f += 1;

x /= 2;

}

/* Initialize the variables. */

v = 1+x

a = x

d = 1

for (i=2; 1; i++) {

e = (a *= x) / (d *= i)

if (e == 0) {

if (f>0) while (f--) v = v*v;

scale = z

if (m) return (1/v);

return (v/1);

}

v += e

}

}

实例3

创建test.bc

scale=2

print "\nCheck book program!\n"

print " Remember, deposits are negative transactions.\n"

print " Exit by a 0 transaction.\n\n"

print "Initial balance? "; bal = read()

bal /= 1

print "\n"

while (1) {

"current balance = "; bal

"transaction? "; trans = read()

if (trans == 0) break;

bal -= trans

bal /= 1

}

quit

[linux@linux ~]$ bc -q test.bc

Check book program!

Remember, deposits are negative transactions.

Exit by a 0 transaction.

Initial balance? 3

current balance = 3.00

transaction? 5

current balance = -2.00

transaction? 0

[linux@linux ~]$

通常在Bash脚本中使用bc的范例格式为:
variable=$(echo "OPTIONS; OPERATIONS" | bc [options]) 即:echo "[选项];操作" | bc [选项]

可参考实例1

[linux@linux ~]$ echo "obase=8; ibase=16; 11+a"|bc

21

下面这个实例可参考下书写格式

使用bc命令的脚本片段
Bash代码 
# usage: add_sum <num1> <num2> 
# 计算两个数的和 
add_sum() 

bc -q <<EOF 
$1+$2 
EOF 
}

bc命令就介绍到这了,如果朋友有更好的实例,希望能多多分享。

bc命令详解与实例的更多相关文章

  1. groupadd命令详解(实例)

     groupadd命令详解(实例)  1.作用groupadd命令用于将新组加入系统. 2.格式groupadd [-g gid] [-o]] [-r] [-f] groupname 3.主要参数-g ...

  2. Linux下的压缩zip,解压缩unzip命令详解及实例

    实例:压缩服务器上当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip filename.zip ====================== ...

  3. Linux下的压缩解压缩命令详解及实例

    实例:压缩服务器上当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip filename.zip ====================== ...

  4. bc命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/lovevivi/p/4359296.html 最近经常要在linux下做一些进制转换,看到了可以使用bc命令,如下: ...

  5. JavaScript中的execCommand()命令详解及实例展示

    execCommand方法是执行一个对当前文档,当前选择或者给出范围的命令.处理Html数据时常用如下格式:document.execCommand(sCommand[,交互方式, 动态参数]) ,其 ...

  6. Linux crontab命令详解与实例

    内容有重复的,不过本着宁多勿少的原则就都看看吧,就当加深印象啦 基本格式 :* * * * * command分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示第2列表示小时 ...

  7. unzip/tar命令详解

    博客目录总纲首页 原文链接:https://www.cnblogs.com/zdz8207/p/3765604.html Linux下的压缩解压缩命令详解及实例 实例:压缩服务器上当前目录的内容为xx ...

  8. apt-get 命令详解(中文),以及实例

    apt-get 命令详解(中文),以及实例 一,什么的是apt-get 高级包装工具(英语:Advanced Packaging Tools,简称:APT)是Debian及其衍生发行版(如:ubunt ...

  9. Windows WMIC命令使用详解(附实例)

    第一次执行WMIC命令时,Windows首先要安装WMIC,然后显示出WMIC的命令行提示符.在WMIC命令行提示符上,命令以交互的方式执行 执行“wmic”命令启动WMIC命令行环境.这个命令可以在 ...

随机推荐

  1. HDU Collect More Jewels 1044

    BFS + 状态压缩 险过 这个并不是最好的算法 但是写起来比较简单 , 可以AC,但是耗时比较多 下面是代码 就不多说了 #include <cstdio> #include <c ...

  2. (转载)mysql查询今天、昨天、7天、近30天、本月、上一月数据

    (转载)http://blog.163.com/dreamman_yx/blog/static/26526894201053115622827/ 查询 今天 select * from 表名 wher ...

  3. lightoj 1291 无向图边双联通+缩点统计叶节点

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1291 #include<cstdio> #include<cstri ...

  4. Android下 scrollview的滚动停止事件的监听方法

    使用递归调用的方法,每隔5毫秒检查一下是否已经停止,如果已经停止,就拿到事件啦! 不扯蛋,直接上代码. scrollContent就是我的scrollview. [代码]java代码: ? 1 2 3 ...

  5. static对象的高级用法

    1. 函数里static对象是local的,其他如全局对象,类里的static对象都是非local的,会在程序初始化中提前创建 2. 非local的对象的创建无法确定先后次序,但能保证在main函数前 ...

  6. C++ XML 解释库

    rapidxml  http://rapidxml.sourceforge.net/index.htm

  7. PuTTY?Bash?Out了!!!终端应该这么玩~

    由于语言的障碍,国内一直存在一个问题,就是新技术引入太慢.比如PuTTY,其实已停止维护N久了,但大部分人却仍然在用(包括之前的我).比如Bash,明知有那么多的问题,却一直没有什么想法,似乎Linu ...

  8. 关于 yii 验证码显示, 但点击不能刷新的处理

    先说说 render 与 renderPartial, 各位看官, 先别走, 我没跑题, 这个问题如果需要解决, 关键就在 render 与 renderPartial 的区别. renderPart ...

  9. POJ 1039 Pipe 枚举线段相交

    Pipe Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9493   Accepted: 2877 Description ...

  10. android 安全退出应用程序的几种方法

    android 安全退出应用程序的几种方法 正常关闭应用程序: 当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用: 第一种方法:首先获取当前进程的id,然后杀死该进程.a ...