对于任何一种编程语言都很重要的特性就是操作数字的能力,遗憾的是,对于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编程-操作数字-加减乘除计算的更多相关文章

  1. 详细介绍Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  2. Linux&nbsp;shell脚本全面学习

    Linux shell脚本全面学习 1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它 ...

  3. Linux shell脚本基础学习详细介绍(完整版)二

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  4. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  5. Shell脚本基础学习

    Shell脚本基础学习 当你在类Unix机器上编程时, 或者参与大型项目如k8s等, 某些框架和软件的安装都是使用shell脚本写的. 学会基本的shell脚本使用, 让你走上人生巅峰, 才怪. 学会 ...

  6. Shell脚本的学习(二)

    Shell脚本的学习(二) 方法: 1) 一个计算器: 2)递归实现打印目录    3)方法调用

  7. Shell脚本的学习(一)

    Shell脚本的学习(一) 一)代码式shell脚本简介 1.下载 Xshell 5 建一个文件夹 mkdri home/data ; 1)查看一个在data里建一个1.sh 查看是否建立成功. 2) ...

  8. [转]Windows网络编程学习-面向连接的编程方式

    直接附上原文链接:windows 网络编程学习-面向连接的编程方式

  9. Shell编程学习之Shell编程基础(一)

    这篇随笔将要介绍关于Shell编程的基本知识,这些将会在假设你已经熟悉了Linux系统和命令行的基本知识. 构建基本脚本 你应该了解或熟悉使用Shell命令行了,但是只是使用Shell命令行的命令,有 ...

随机推荐

  1. Northwind数据库不能在SQL Server 2012上创建

    附加mdf文件不出意料会提示数据库格式无法兼容,试着通过脚本来创建,会有以下错误提示: Could not find stored procedure 'sp_dboption'. 原因是SQL Se ...

  2. Django学习之ORM操作

    一.一般操作 二.必知必会13条 返回QuerySet对象的方法有 特殊的QuerySet 返回具体对象的 返回布尔值的方法有 返回数字的方法 三.单表查询之神奇的双下划线 四.ForeignKey操 ...

  3. jwplayer

    将JW Player嵌入到网页中非常的简单,只需要进行如下3个步骤: 1.解压mediaplayer-viral.zip文件,将jwplayer.js和player.swf文件拷贝到工程中: 2.在页 ...

  4. B. Train Seats Reservation 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛

    You are given a list of train stations, say from the station 1 to the station 100. The passengers ca ...

  5. DevOps - 项目构建 - Maven

    Maven介绍Apache Maven是一个创新的软件项目管理和综合工具.Maven提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资料片管理项目构建,报告和文件.Ma ...

  6. 微信小程序播放视频

    <view class="section tc"> <video id="myVideo" src="http://wxsnsdy. ...

  7. php Laravel5.5 表单验证常用的验证规则,以及示例

    namespace App\Http\Controllers; use App\Models\Users; use Illuminate\Support\Facades\Validator; use ...

  8. Python学习之property

    Python中使用Property函数可以将类中的函数当作属性来调用. 案例 __metaclass__=type class Rectangle: def __init__(self): self. ...

  9. ecshop 漏洞如何修复 补丁升级与安全修复详情

    目前ecshop漏洞大面积爆发,包括最新版的ecshop 3.0,ecshop 4.0,ecshop2.7.3全系列版本都存在着高危网站漏洞,导致网站被黑,被篡改,被挂马,许多商城系统深受其漏洞的攻击 ...

  10. Element-ui学习使用

    这是我使用Element-ui的布局,排布的一个界面,原本我是使用WinfowsForm来做的一个摄像头注册以及查询的小工具,目前我关注前后端的开发,所以就想着能不能把这么个小工具,我用前后端的形式开 ...