shell脚本中的数值运算

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

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

一,$ 和[], []包含的数学算式可以被shell正确识别。
[root@localhost ~]# cat test.sh

例1。

#!/bin/bash
var1=100
var2=200
var3=$[$var1+$var2]
echo $var3
[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 − j - jk
3.((i=j∗k)) 等价于 i=expr KaTeX parse error: Expected 'EOF', got '\*' at position 3: j \̲*̲k
4.((i=j/k)) 等价于 i=expr j / j / 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=expr$1**$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))			 #取余
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值