您的位置:首页 > 运维架构 > Shell

shell脚本中的数值运算

2016-07-05 17:51 435 查看
最近参加嵌入式培训,学长布置了一个任务就是用脚本输出斐波那契数列,在解决问题的过程中,遇到了很多问题。翻了鸟叔的书,百度了一会后,总算解决了大半。但就是脚本中的数值运算让我废了很多脑筋,所以准备对他做做总结。

shell中的变量没有如c语言中字符型、整型、浮点型的区分,默认将变量赋值当做字符,怎样才能让shell将变量赋值当做数值型呢,答案是用

一,$ 和[], []包含的数学算式可以被shell正确识别。

[root@localhost ~]# cat test.sh

例1。 #!/bin/bash

var1=100

var2=200

var3=[var1+var2]echovar3

[root@localhost ~]# sh test.sh

300

二,shell中还提供了一个数学运算的命令 expr(evaluate expression),他可以进行加减乘除还有比较运算,不过很可惜的是不支持浮点型运算。

例2。 1.((i=j+k)) 等价于 i=expr j+k

2.((i=j−k)) 等价于 i=expr j−k

3.((i=j∗k)) 等价于 i=expr j\*k

4.((i=j/k)) 等价于 i=expr j/k

缺陷就是expr命令中的运算符可能会有其他含义如*,必须要使用反斜杠进行转义(如3)

注意:Let expressions 执行一个或多个表达式。表达式中的变量前不必有$.如果表达式中包含了空格或其他特殊字符,则必须引起来。

三, 用let指示数学运算。可以先将运算的结果赋值给变量b,运算命令是b=let 1 + 2。然后用echo$b来输出b的值。如果没有let,则会输出1+2。

下面是一个shell程序实例,实现数学函数S=3(xy)+4x2+5y+6的运算。在程序中以位置变量的方式输入x与y的值

(**:对两个变量做幂运算。)

!/bin/bash

s=0 #定义一个求和变量,初值为0。

t=expr1∗∗2 #用expr改变运算顺序,求x的y次方。

t=$[t*3] #t乘以3。

s=$[s+t] #结果相加。

t=[1**2] #求x的平方。

t=$[t*4] #结果乘以4。

s=$[s+t] #结果相加。

t=expr$2*5 #求5y的值。

s=$[s+t] #结果相加。

s=$[s+6] #结果加上6。

echo$s #输出结果。

echo$((a%b)) #取余
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: