原生bash不支持简单的数学运算,即使是最简单的加减乘除

  但是,可以使用$[]和expr来实现整数运算

  如果要实现小数运算,可以使用bc命令

使用$[]来实现:

#!/bin/bash
#文件名:test.sh echo $[ 1 + 3 ] echo $[ $1 + $2 ]
echo $[ $1 - $2 ]
echo $[ $1 * $2 ] #此时不用对*转义
echo $[ $1 / $2 ]
echo $[ $1 % $2 ]

  执行脚本:

ubuntu@ubuntu:~$ ./test.sh 10 20
4
30
-10
200
0
10
ubuntu@ubuntu:~$

  主要注意的是:

    1、运算符和两边要进行计算的数值之间,有空格

    2、虽然两个方括号和要进行计算的数值之间可以没有空格,但是强烈建议增加一个空格,因为后面会学到很多时候,方括号和参数之间都有空格。

使用expr实现:

#!/bin/bash
#文件名:test.sh #expr是一个用于数值计算的命令
#此时运算符号两边必须加空格,不加空格会原样输出,不会计算
expr 1 + 3 #命令行第2个参数和第3个参数求和
expr $1 + $2
expr $1 - $2
expr $1 * $2 #失败
expr $1 \* $2 #因为乘号*在shell中有特殊的含义,所以要转义
expr $1 / $2 #除法取商
expr $1 % $2 #除法取模

  运行脚本:

ubuntu@ubuntu:~$ ./test.sh 10 20
4
30
-10
expr: syntax error
200
0
10
ubuntu@ubuntu:~$

  

  使用expr之前先了解一下反引号``的功能,反引号的功能是将反引号括起来的内容执行,没错,就是执行,这就意味着,反引号括起来的是一条命令,此时是一个命令的运行结果,而结果就是一条命令,并且反引号不能单独使用,要将包含反引号及其括起来的语句赋值给一个变量,否则出错;如果不想将其赋给一个变量,就不要用反引号,直接写反引号中的内容,因为其内容就是一条命令。

#!/bin/bash
#文件名:test.sh #此时运算符号两边必须加空格
#必须将反引号中命令的结果赋给一个变量
num=`expr 1 + 3`
echo $num #命令行第2个参数和第3个参数求和
num=`expr $1 + $2`
echo $num #乘法运算符仍要转义
num=`expr $1 \* $2`
echo $num

  运行脚本:

ubuntu@ubuntu:~$ ./test.sh 10 20
4
30
200
ubuntu@ubuntu:~$

  

使用bc进行浮点数计算

ubuntu@ubuntu:~$ echo 1.4*4 | bc  #乘号和运算数之间没有空格时,不用转义
5.6
ubuntu@ubuntu:~$ echo 1.4 \* 4 | bc #乘号和运算数之间有空格时,必须转义
5.6
ubuntu@ubuntu:~$ echo 1.5-4 | bc
-2.5

  鉴于计算时很难记错,运算符之间是否要加空格,统一推荐加,如果是乘号*,则转义。

shell脚本--数值计算的更多相关文章

  1. shell 脚本阅读之二——ltp工具下的runltp

    #!/bin/sh ################################################################################ ## ## ## ...

  2. 《Linux命令行与shell脚本编程大全》第二十一章 sed进阶

    本章介绍一些sed编辑器提供的高级特性. 21.1 多行命令 按照之前的知识,所有的sed编辑器命令都是针对单行数据执行操作的. 在sed编辑器读取数据流时,它会基于换行符的位置将数据分成行,一次处理 ...

  3. shell的数值计算,小数计算

    shell脚本中,可以进行数值计算, 如加减乘除,通过expr.let.(())等完成,文章介绍:http://blog.csdn.net/longshenlmj/article/details/14 ...

  4. shell脚本基础教程

    一.什么是shell: shell解释:引用别人的话说:“Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言.” 简而言之, ...

  5. Linux 小知识翻译 - 「Shell 脚本」

    这次说说「Shell 脚本」. 根据上回的介绍,Shell就是「作为联系Linux和用户的接口而存在的软件」.在Linux环境中,通过Shell来操作系统很普遍. 这里,考虑到有时候可能想要「多次的进 ...

  6. Linux运维之shell脚本

    一.bash漏洞 1)bash漏洞 bash漏洞是控制Linux计算机命令提示符的软件中存在的漏洞. bash是一个为GNU计划编写的Unix shell.它的名字是一系列缩写:Bourne-Agai ...

  7. Linux Shell脚本编程基础(11)

    实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核,不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序.Shel编程语言具有普通编程 ...

  8. Linux入门第五天——shell脚本入门(上)基本概念

    一.什么是shell脚本 Shell 脚本(shell script),是一种为 shell 编写的脚本程序. 二.shell入门 1.先导知识 变量知识补充:https://www.cnblogs. ...

  9. (转)shell脚本之文件测试操作符及整数比较符

    shell脚本之文件测试操作符及整数比较符 原文:http://www.cnblogs.com/Steward-Xu/p/6722592.html 一.文件测试操作符: 在书写测试表达式是,可以使用一 ...

随机推荐

  1. React脚手架创建一个React应用以及项目目录结构详解

    react脚手架 用来帮助程序员快速创建一个基于xxx库的模板项目,包含了所有需要的配置,指定好了所有的依赖,可以直接安装/编译/运行一个简单效果 react提供了一个专门用于创建react项目的脚手 ...

  2. LinkedList与ArrayList的区别

    我们都知道LinkedList和ArrayList相比: 1.LinkedList插入删除相对较快,而查询较慢: 2.ArrayList插入删除相对较慢,而查询很快(详细可查看从源码的角度分析List ...

  3. flare-spork: 自己维护的Pig on Spark项目

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zbf8441372/article/details/24726501 关于flare-spork 非 ...

  4. mvn 的 provided 以及 test等等 还有git团队开发技巧

    mvn 的 provided 以及 test等等 还有git团队开发技巧

  5. javascript高级选择器querySelector和querySelectorAll

    querySelector 和 querySelectorAll 方法是 W3C Selectors API规范中定义的.他们的作用是根据 CSS 选择器规范,便捷定位文档中指定元素. 目前几乎主流浏 ...

  6. call()、delegatecall()

    call()当使用方法是:require(msg.sender.call.value(_weiToWithdraw)());则作用是将_weiToWithdraw个以太币发送给msg.sender地址 ...

  7. java FTP各种操作

    package com.ailk.qw.util; import it.sauronsoftware.ftp4j.*;import org.slf4j.Logger;import org.slf4j. ...

  8. [转]Win7 + Ubuntu 18.04 LTS (Bionic Beaver)双系统安装方法

    这里介绍在win7的基础上,安装ubuntu 18.04 LTS,实现双系统启动. 首先,假设你已安装了windows 7系统. 一. 制作ubuntu U盘启动盘. 方法见http://blog.p ...

  9. Opencv——相机标定

    相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像. 相机标定的输入:标定图像上所有内角 ...

  10. MySQL(二)数据的检索和过滤

    使用频率最高的SQL语句应该就是select语句了,它的用途就是从一个或多个表中检索信息,使用select检索表数据必须给出至少两条信息:想选择什么,以及从什么地方选择 一.检索数据 1.检索单个列 ...