linux运算_linux中的计算【转】

shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法,以后用到的时候可以来看,呵呵

1、错误方法举例

a)

var=1+1

echo $var

输出的结果是1+1,悲剧,呵呵

b)

var=1

var=$var+1

echo $var

输出结果是1+1,依然悲剧,呵呵

2、正确方法

1)使用let

var=1

let "var+=1"

echo $var

输出结果为2,这次没有悲剧

注意:

a)经我测试let几乎支持所有的运算符,在网上看到一篇文章说“let不支持++、--和逗号、(、)”,但经我测试自加、自减、以及括号的优先级都得到了很好的支持

b)方幂运算应使用“**”

c)参数在表达式中直接访问,不必加$

d)一般情况下算数表达式可以不加双引号,但是若表达式中有bash中的关键字则需加上

e)let后的表达式只能进行整数运算

2)使用(())

var=1

((var+=1))

echo $var

输出结果为2

注意:

(())的使用方法与let完全相同

3)使用$[]

var=1

var=$[$var+1]

echo $var

输出结果位2

注意:

a)$[]将中括号内的表达式作为数学运算先计算结果再输出

b)对$[]中的变量进行访问时前面需要加$

c)$[]支持的运算符与let相同,但也只支持整数运算

4)使用expr

var=1

var=`expr $var + 1`

echo $var

输出结果为2

注意:

a)expr后的表达式个符号间需用空格隔开

b)expr支持的操作符有: |、&、=、>、+、-、*、/、%

c)expr支持的操作符中所在使用时需用\进行转义的有:|、&、=、>、*

e)expr同样只支持整数运算

5)使用bc(可以进行浮点数计算)

var=1

var=`echo "$var+1"|bc`

echo $var

输出结果为2

介绍:

bc是linux下的一个简单计算器,支持浮点数计算,在命令行下输入bc即进入计算器程序,而我们想在程序中直接进行浮点数计算时,利用一个简单的管道即可解决问题。

注意:

1)经我测试bc支持除位操作运算符之外的所有运算符。

2)bc中要使用scale进行精度设置

3)浮点数计算实例

var=3.14

var=`echo "scale=2;$var*3"|bc`

echo $var

输出结果为9.42

6)使用awk(可已进行浮点数计算)

var=1

var=`echo "$var 1"|awk '{printf("%g",$1*$2)}'`

echo $var

输出结果为2

介绍:

awk是一种文本处理工具,同时也是一种程序设计语言,作为一种程序设计语言,awk支持多种运算,而我们可以利用awk来进行浮点数计算,和上面bc一样,通过一个简单的管道,我们便可在程序中直接调用awk进行浮点数计算。

注意:

1)awk支持除微操作运算符之外的所有运算符

2)awk内置有log、sqr、cos、sin等等函数

3)浮点数计算实例

var=3.14

var=`echo "$var 2"|awk '{printf("%g",sin($1/$2))}'`

echo $var

输出结果为1

3、总结

终于把所有能搜集到的资料看完,并最后总结出一套自己的东西了,以后再遇到类似问题就有的看了,哈哈~

转自

shell 中数学计算总结_linux shell_脚本之家

http://www.jb51.net/article/31232.htm

Linux下的计算器(bc、expr、dc、echo、awk)知多少?

在windows下,大家都知道直接运行calc,(c:\windows\system32\calc.exe),请可以打开计算器。

注:

calculate vt.&vi. 计算;calculator n. 计算器。calc就是这个计算的简写。

Ca在化学中是代表钙元素,calcium 钙(20号元素,符号Ca)。两者有什么联系呢?

calculate来自calculus,原义是做算术运算的小石子,是calx(石灰石)的小称。

那么在linux系统下,有无与windows下calc.exe类似的计算器呢?

下面总结linux下的三个命令,来介绍一下linux下的计算方法:

1)bc

bc在默认的情况下是个交互式的指令。在bc工作环境下,可以使用以下计算符号:

+ 加法

- 减法

* 乘法

/ 除法

^ 指数

% 余数

如:

# 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'.

3+6 <=加法

9

4+2*3 <=加法、乘法

10

(4+2)*3 <=加法、乘法(优先)

18

4*6/8 <=乘法、除法

3

10^3 <=指数

1000

18%5 <=余数

3+4;5*2;5^2;18/4 <=一行输入多个计算,用;相隔。

7

10

25

4

quit <=退出

# 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'.

scale=3 <=设小数位

1/3

.333

quit

以上是交互的计算,那到也可以不进行交互而直接计算出结果。

A.用echo和|法,如:

# echo "(6+3)*2" |bc

18

# echo 15/4 |bc

3

# echo "scale=2;15/4" |bc

3.75

# echo "3+4;5*2;5^2;18/4" |bc

7

10

25

4

另外,bc除了scale来设定小数位之外,还有ibase和obase来其它进制的运算。

如:

//将16进制的A7输出为10进制, 注意,英文只能大写

# echo "ibase=16;A7" |bc

167

//将2进制的11111111转成10进制

# echo "ibase=2;11111111" |bc

255

//输入为16进制,输出为2进制

# echo "ibase=16;obase=2;B5-A4" |bc

10001

对于bc还有补充,在bc --help中还可以发现:bc后可以接文件名。如:

# more calc.txt

3+2

4+5

8*2

10/4

# bc calc.txt

5

9

16

2

2)expr

expr命令可不光能计算加减乘除哦,还有很多表达式,都可以计算出结果,不过有一点需要注意,在计算加减乘除时,不要忘了使用空格和转义。下面直接用实例来介绍一下expr的运算,如:

# expr 6 + 3 (有空格)

9

# expr 2 \* 3 (有转义符号)

6

# expr 14 % 9

5

# a=3

# expr $a+5 (无空格)

3+5

# expr $a + 5 (变量,有空格)

8

# a=`expr 4 + 2`

echo $a

6

# expr $a + 3

9

另外,expr对于字串的操作(计算)也是很方便的,如:

//字串长度

# expr length "yangzhigang.cublog.cn"

21

//从位置处抓取字串

# expr substr "yangzhigang.cublog.cn" 1 11

yangzhigang

//字串开始处

# expr index "yangzhigang.cublog.cn" cu

13

3)dc

用dc来进行计算的人可以不多,因为dc与bc相比要复杂,但是在进行简单的计划时,是差不多的,不算难。dc为压栈操作,默认也是交互的,但也可以用echo和|来配合打算。

如:

# dc

3

2+

p

5

4*

p

20

quit

# echo 3 2+ 4* p |dc

20

4)echo

echo用来进行回显,是周知的事。上面也配合bc来进行计算。其实echo也可以单独进行简单的计算,如:

# echo $((3+5))

8

# echo $(((3+5)*2))

16

echo还可以进行变量的计算,如:

# a=10

# b=5

# echo $(($a+$b))

15

# echo $a+$b

10+5

# echo $a+$b |bc

15

//计算前天的日期

# echo `date +%Y%m%d`

20090813

# echo `date +%Y%m%d`-2

20090813-2

# echo `date +%Y%m%d`-2 |bc

20090811

5)AWK

awk在处理文件的时,可以进行运算,那当然也可以单单用来计算了,如:

# awk 'BEGIN{a=3+2;print a}'

5

# awk 'BEGIN{a=(3+2)*2;print a}'

10

转自

Linux下的计算器

http://www.360doc.com/content/12/0822/19/8093902_231769351.shtml

例子,奇偶数判断

#/bin/bash

read-p "请输入一个数字:"strif test `expr $str % 2` -eq 0

then echo "$str 是一个偶数。"

else echo "$str 是一个奇数。"

fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值