Linux-Shell脚本编程-学习-4-Shell编程-操作数字-加减乘除计算
对于任何一种编程语言都很重要的特性就是操作数字的能力,遗憾的是,对于shell脚本来说,这个过程比较麻烦,在shell脚本中有两种途径来进行数学运算操作。
1.expr 最开始的时候,shell提供了一个特别的命令来梳理数学表达式,expr允许在命令行上处理数学表达式,但是特别笨拙。
使用expr运算加减还是可以,但是当遇到*号是,就会出现错误,需要用到转义字符 \来识别,同样,当你希望将数学算式的结果付给一个变量的时候,你需要使用反引号来获取ecpr命令的输出。
幸好,在这里,shell还有有种解决方案,使用方括号[]
2 使用方括号[]
例如:
var1=$[1+5]
echo $var1
var2=$[$var1 * 2]
echo $var2
这里计算就没有问题了
3.浮点数的解决方案
在shell脚本编程中,处理浮点数做常见的方法就是使用内建的bash计算机 bc
bc计算器可以识别 数字、变量、注释、表达式、编程语句、函数。
在脚本中使用bc的基本格式是 variable=`echo "options;expression" | bc
第一部分options允许你来设定变量,如果你需要设置的不止一个变量,可以用分号来分开他们。expression参数定义了通过bc执行的数学表达式。
例如
var1=`echo "scale=4;3.44/5" | bc`
echo the number is $var1
这种方法一般适用于啊+b的这中简单的数学运算当我们遇到复杂的运算是,就显得麻烦了,针对这个,bc命令能识别输入重定向,允许你将一个文件重定向到bc命令来处理,最好的方法就是使用内链出入重定向,允许你直接在控制台重定向数据,在shell脚本中,你可以讲输出赋给一个变量
variable=`bc << EOF
options
statements
expressions
EOF
`
EOF文本字符串标示了内链重定向数据的开始和结尾,记住仍需要使用反引号来讲bc命令的输出赋给变量。
#!/bin/bash # an exoample for number var1=10.46
var2=43.67
var3=33.2
var4=71 var5=`bc << EOF
scale =4
a1 = ($var1 * $var2)
b1 = ($var3 * $var4)
a1 + a2
EOF
`
echo "the final answer for this mess is $var5"以上就是一个简单的例子
Linux-Shell脚本编程-学习-4-Shell编程-操作数字-加减乘除计算的更多相关文章
- 详细介绍Linux shell脚本基础学习
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...
- Linux shell脚本全面学习
Linux shell脚本全面学习 1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它 ...
- Linux shell脚本基础学习详细介绍(完整版)二
详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...
- Linux shell脚本基础学习详细介绍(完整版)一
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...
- Shell脚本基础学习
Shell脚本基础学习 当你在类Unix机器上编程时, 或者参与大型项目如k8s等, 某些框架和软件的安装都是使用shell脚本写的. 学会基本的shell脚本使用, 让你走上人生巅峰, 才怪. 学会 ...
- Shell脚本的学习(二)
Shell脚本的学习(二) 方法: 1) 一个计算器: 2)递归实现打印目录 3)方法调用
- Shell脚本的学习(一)
Shell脚本的学习(一) 一)代码式shell脚本简介 1.下载 Xshell 5 建一个文件夹 mkdri home/data ; 1)查看一个在data里建一个1.sh 查看是否建立成功. 2) ...
- [转]Windows网络编程学习-面向连接的编程方式
直接附上原文链接:windows 网络编程学习-面向连接的编程方式
- Shell编程学习之Shell编程基础(一)
这篇随笔将要介绍关于Shell编程的基本知识,这些将会在假设你已经熟悉了Linux系统和命令行的基本知识. 构建基本脚本 你应该了解或熟悉使用Shell命令行了,但是只是使用Shell命令行的命令,有 ...
随机推荐
- 2018.10.3 MianShiBaoDian JavaWeb后端部分
MSBD 四.JavaWeb后端部分 1.Tomcat的优化经验 去掉对web.xml的监控,吧jsp提前编写成servlet,由于物理内存的情况,加大Tomcat使用的jvm的内存 2.HTTP请求 ...
- sougou输入法无法正常输入汉字
删除~/.config目录下的SougouPY SogouPY.users sogou-qimpanel文件夹,然后重启搜狗输入法即可
- 【洛谷T37388】P哥破解密码
原题图: 看到这个题,首先想到的当然是暴力打表找规律了 表: 1 2 2 4 3 7 4 13 5 24 6 44 7 81 8 149 9 274 10 504 11 927 12 1705 13 ...
- CodeForces - 598A Tricky Sum (数学,快速幂的运用)
传送门: http://codeforces.com/problemset/problem/598/A A. Tricky Sum time limit per test 1 second memor ...
- shell命令查看某文件夹下的文件个数
shell命令查看某文件夹下的文件个数 2010-06-25 17:05:15| 分类: shell |字号 订阅 1.查看某文件夹下文件的个数: ls -l |grep "^-&qu ...
- lucene&solr学习——创建和查询索引(理论)
1.Lucene基础 (1) 简介 Lucene是apache下的一个开放源代码的全文检索引擎工具包.提供完整的查询引擎和索引引擎:部分文本分析引擎. Lucene的目的是为软件开发人员提供一个简单易 ...
- mysql慢查询开启及分析方法
最近服务维护的公司的DB服务器,总是会出现问题,感觉需要优化一下了,登陆上去,发现慢查询日志都没有开,真是惭愧, 故果断加上慢查询日志, 经过分析sql记录,发现问题很多,开发人员很多没有对sql优化 ...
- Struts-Core jar包
密码t6mp https://pan.baidu.com/share/init?surl=E--zExzI9-VY1zaT8F9i9w
- C/C++获取CPU等硬件信息&&屏幕截图
打算练习Socket的时候用用,最近有点小事情,没时间继续完善,先把写的这些代码贴上来,有空了再完善一下. HardwareInfo.h #include <stdio.h> #inclu ...
- 大学C++程序设计教程期末复习重点
第一章 1.cin与count的应用<iostream> 例: cin>>a; cout<<"hello"<<endl; cout& ...