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. bzoj2400

    首先xor类的题目一定要逐位考虑,因为位位之间是不相互影响的逐位考虑每个点是0还是1,这就转化成了一个这样一个问题对于每个点可以选择属于S集合(这位是0)或T集合(这位是1)某些的点对(一条边的两端) ...

  2. SendMessage和PostMessage区别以及WPARAM 和 LPARAM区别

    WPARAM 和 LPARAM wParam和lParam 这两个是Win16系统遗留下来的产物,在Win16API中WndProc有两个参数:一个是WORD类型的16位整型变量:另一个是LONG类型 ...

  3. C#中object sender,EventHandler e有个毛作用

    button1_Click(object sender,EventHandler e) { Button button=(Button)sender; button.Text="text p ...

  4. UVA 11922 Permutation Transformer(Splay Tree)

    题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18902 [思路] 伸展树+打标记. 用伸展树维护这个序列,使得能 ...

  5. Cleaning Shifts(区间覆盖)

    /* http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1019&ojid=1&cid=10 题目: 给定一个时 ...

  6. phantomjs截图的实践

        年前也做了一些东西,由于过年只顾疯了,也没有整理,年后补上把~ 今天整理一下个phantomjs截图实践中遇到的问题.           最近做的一个项目,需要在首页展示已经做的一些项目的缩 ...

  7. 大数据分析神兽麒麟(Apache Kylin)

    1.Apache Kylin是什么? 在现在的大数据时代,越来越多的企业开始使用Hadoop管理数据,但是现有的业务分析工具(如Tableau,Microstrategy等)往往存在很大的局限,如难以 ...

  8. iframe与父页面中JS执行顺序控制

    同事遇到了一个问题: 父页面中有几个iframe,初衷是父页面的JS通过AJAX获取数据,然后用于初始化iframe页面,可以结果却是有的iframe页面却不能获得数据. [问题根源] 父页面在加载i ...

  9. 关于kali安装vmware的坑,linux套路太深。

    http://www.linuxidc.com/Linux/2015-08/122240.htm 但是还有些坑 安装gcc5.4.1 apt-get install gcc-5 gcc-5所在目录 / ...

  10. URL重写:RewriteCond指令与RewriteRule 指令格式(转)

    Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等.本文将针对mod_rewrite和URL匹配的技术细 ...