bc命令详解与实例

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

计算圆周率


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

[[email protected] ~]$ 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


[[email protected] ~]$ 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

[[email protected] ~]$

?

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

可参考实例1


[[email protected] ~]$ 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命令就介绍到这了,如果朋友有更好的实例,希望能多多分享。

?

时间: 2024-11-08 01:13:18

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

groupadd命令详解(实例)

 groupadd命令详解(实例)  1.作用groupadd命令用于将新组加入系统. 2.格式groupadd [-g gid] [-o]] [-r] [-f] groupname 3.主要参数-g gid:指定组ID号.-o:允许组ID号,不必惟一.-r:加入组ID号,低于499系统账号.-f:加入已经有的组时,发展程序退出. 4.应用实例建立一个新组,并设置组ID加入系统:#groupadd -g 344 cjh 此时在/etc/passwd文件中产生一个组ID(GID)是344的项目.

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

Linux下的压缩zip,解压缩unzip命令 本人亲自测试总结: linux 安装unzip zip 安装命令:yum install -y unzip zip # unzip yasuo.zip 方法一: 安装命令:yum install -y unzip zip 1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip:# zip -r yasuo.zip abc.txt dir12.我下载了一个yasuo.zip文件,想解压缩: # unzip yasuo.zip

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

实例:压缩当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip filename.zip ============================ 另:有些服务器没有安装zip包执行不了zip命令,但基本上都可以用tar命令的,实例如下: tar -zcvf /home/zdzlibs.tar.gz /home/zdz/java/zdzlibs/ ============================ linux zip命令 zip -

seq命令详解太实例操作

seq命令总结 基本用法 seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量 尾数 以指定增量从首数开始打印数字到尾数. 选项: -f, --format=格式 使用printf 样式的浮点格式 -s, --separator=字符串 使用指定字符串分隔数字(默认使用:\n) -w, --equal-width 在列前添加0 使得宽度相同 实例:输出10个数 [[email protected] ]# seq 10 1 2 3 4 5 6 7 8

sed命令详解和实例

sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed的选项.命令.替换标记 命令格式 sed [options

awk命令详解和实例

一.  AWK 说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具.它在命令行中使用,但更多是作为脚本来使用. awk的处理文本和数据的方式:它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作.如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定

Linux crontab命令详解与实例

内容有重复的,不过本着宁多勿少的原则就都看看吧,就当加深印象啦 基本格式 :* * * * * command分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示第2列表示小时1-23(0表示0点)第3列表示日期1-31第4列表示月份1-12第5列标识号星期0-6(0表示星期天)第6列要运行的命令 crontab文件的一些例子: 30 21 * * * /usr/local/etc/rc.d/lighttpd restart上面的例子表示每晚的21:30重启apache.

sed命令详解及实例

要想灵活的并按照需要处理文本,我们需要充分的学会并掌握三大文本处理工具,grep.sed(数据流编辑器).awk(报告文本的生成器) 下面介绍并学习sed命令的基本用法 sed又名stream editer,是行编辑器(编辑器包括字处理器和文本编辑器),是文本编辑器,是操作纯Ascii码文本的,操作文本是按行进行操作的,逐行处理文本,默认并不直接处理文本本身,操作时是将文本逐行读取到内存中,在内存中处理后并将符合模式匹配到的行显示到屏幕上,内存空间称为sed模式空间. 默认是打印模式空间. SY

execCommand()命令详解及实例展示

execCommand方法是执行一个对当前文档,当前选择或者给出范围的命令.处理Html数据时常用如下格式: document.execCommand(sCommand[,交互方式, 动态参数]) , 其中:sCommand为指令参数(如下例中的"2D-Position"), 交互方式参数如果是 true的话将显示对话框, 如果为false的话,则不显示对话框 (下例中的"false"即表示不显示对话框), 动态参数一般为一可用值或属性值(如下例中的"tr