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)) #取余
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)) #取余
相关文章推荐
- shell中利用自定义命令简化操作
- adb bash
- HBase 常用Shell命令
- Linux shell 常用知识点
- ActiveMQ 后台拿shell CVE-2016-3088 (价值3500刀) -- 2016-07-04 17:07
- Linux修改Shell命令提示符及颜色
- shell 导入csv到mysql
- ubuntu 创建新的用户和用户组 以及新用户无法使用bash的问题
- 树莓派IoT 学习2 shell搭建mqtt环境
- Shell脚本安装成服务加入系统启动-service XX does not support chkconfig
- Xshell 配置方案
- 根据一个域名取其根域
- shell编程——if语句 if -z -n -f -eq -ne -lt
- shell 编程
- shell stdin 变 参数
- shell 判断 404
- 通过shell脚本进行数据库操作
- Linuxshell脚本之蛋疼Sed简介正则表达式
- cocoapods之 Operation not permitted - /usr/bin/pod 和-bash: pod: command not found
- shell获取文件名及后缀