---恢复内容开始---

关于shell里面的计算其实早在接触LINUX的时候就已经接触到了。每次在运用的时候却是在网上到处找,所以觉得花点时间好好研究下。  

  首先了解下常用的算数运算符号:

+  -

加法(正号),减法(负号)

*  /  %

乘法,除法,取余

**

幂运算

++ --

增加或者减少,可前置也可放在变量结尾

! && ||

逻辑非(取反)。逻辑与(and),逻辑或(or)

< <= > >=

小于,小于等于 大于 大于等于

== !=  =

比较符号(相等。不相等。 对于字符串=也是等于号)

<< >>

向左移位,向右移位

~ | & ^

安位取反 按位异或 按位与  按位或

= += -= *= /= %=

赋值运算符例如 a+=1 就是a=a+1

  常用的算数运算命令如下

运算操作与运算命令

意义

(())

用于证书运算的常用运算符,效率很高

let

用于证书运算,类似于‘(())’

expr

可用于整数运算,但还有很多其他额外的功能

bc

Linux下的一个运算程序(数和证书和小数运算)

$[]

用于整数运算

awk

awk既可以用于证书运算,也可以用于小数运算

declare

定义变量和属性,-i参数可以用于定义整形变量,做运算/

一:双小括号的运算实践

  1.1

    利用(())进行简单的计算((i=i+1))表示把i+1的结果赋给i,但是如果要引用结果的话,不知能echo ((i=1+1))必须要加上$符号 echo $((i=1+1))

    

     

  1.2 利用(())双括号进行比较以及判断

    这里的 1 表示真,0表示假可以和逻辑运算一起。

注意:上面涉及的数字以及变量必须为整数(整形),不能是小数或者字符串

  1.3 --,++的用法

    举个最简单的例子:

  ++a表示输出计算后的数,a++表示输出的是a的值

1.4 (())的赋值运算

  这里需要注意的是 (())里面引用变量可以不加$ (当然也可以加,我习惯加)

   (())里面所有字符之间没有空格,有一个或者多个不会影响结果。let命令和(())功能相同但是效率较低这里就不说了

二 expr命令的用法

  expr既可以用于整数计算,也可以用于字符串的长度,匹配的运算处理。

  2.1用于计算

    

  2.2 用于字符串,expr判断字符串是否是整数。由于函数库比较少,所以判断字符串是否为整数是一个比较难的事情。实现原理,比一个字符串和1相加,查看返回值,如果返回值是0,那么这个数就是整数

   注意,使用expr  后面计算符号前后必须有空格!!

    也可以使用match来匹配如下:

    expr的特殊用法,判断文件名是否满足要求!

            计算字符串的长度

AWK 实现计算!

  用awk实现计算的一个非常好的方法,特别是小数

  

我们上面的都是直接用$i 来引用,也可以用declare(同typeset)来定义 然后直接使用

这样用的比较少

$[]符号的运算

  

以上就是我们常用的运算!!下面有几个实例

    写一个脚本,完成输入两个数,判断这两个数是否为整数,如果是整数,完成相加并且输出结果,如果不是则给出相应的提示

     

 #!/bin/bash

       read -t 15 -p "please input two num:"  a  b

       [ ${#a} -le 0 ]  && { echo "the first num is null exit 1"}

       [ ${#b} -le 0 ]  && { echo "the secound num is null exit 1"}

        expr $a + 1 &> /dev/null

      RETVAL_A=$?

        expr $b + 1 &> /dev/null

       RETVAL_B=$?

 if [ $RETVAL_A -ne 0 -o $RETVAL_B -ne 0   ] ;then

  echo "one of the num is not num ,pls input again"

  exit 1

fi

---恢复内容结束---

shell 里面的计算的更多相关文章

  1. Shell之数学计算

    本博客已经迁往http://www.kemaswill.com/, 博客园这边也会继续更新, 欢迎关注~ 数学计算是Shell中比较常用的一种操作,  但是因为shell中所有的变量都默认为字符串, ...

  2. shell 中数学计算总结

    shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法,以后用到的时候可以来看,呵呵.   1.错误方法举例   a)   var=1+1   echo $var  ...

  3. Shell中数学计算/运算

    shell中的赋值和操作默认都是字符串处理. 1)使用let(只能进行整数运算)var=1let "var+=1"echo $var输出结果为2 注意:a)let几乎支持所有的运算 ...

  4. Shell脚本中计算字符串长度的5种方法

    有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前Shell中获取字符串的长度的多种方法,在这里分享给大家,方法如下: 方法1: 使用wc -L命令wc -L可以获取到当前行 ...

  5. 通过shell进行数学计算

    对于基本运算,可以使用let, $(())和$[] 对于高级运算,使用expr和bc这两个工具 [hupeng@hupeng-vm shell]$n1= [hupeng@hupeng-vm shell ...

  6. shell脚本,计算学生分数的题目。

    1.计算学生平均分数的值是多少? 2.计算每门课都大于80分的学生姓名.3.计算每门课都小于90分的学生姓名.

  7. shell脚本,计算1+2+3+....100等于多少?

    第一种方法,通过for循环来计算[root@localhost wyb]# cat yibai.sh #!/bin/bash #从1+++...100的结果 i= ` do sum=$(($sum+i ...

  8. Linux下Shell命令加减乘除计算

    使用 expr命令 (其中做乘的时候*号要用斜杠进行转义) 除以 [hadoop-user@hadoop1]$ echo `expr 9 / 3`             3加 [hadoop-use ...

  9. linux shell执行远程计算机上的命令或者脚本(ssh)

    大数据平台下经常建立设计多个节点的集群需要统一部署,这就设计到守护进程或者部署脚本在不同节点执行,如果能在master机器上,统一执行脚本,一次性启动整个集群的服务,感觉很nice.因为,分享如下内容 ...

随机推荐

  1. [go]net/http

    常用方法 r.Method == "GET" time.Now().Format("2006-01-02 15:04:05") //文件操作 os.Create ...

  2. springboot2.0---控制台打印Mybatis的SQL记录

    题记:每次使用mybatis出错,都不知道sql原因,debug也不出结果,索性将其打印出来,更加容易排错. 亲测有效,只需要将下面的logback.xml放置在resource目录下即可打印. 方式 ...

  3. UML学习笔记_02_UML初识(简单的流程)

    UML建模简单流程: 分析->定义用例->定义领域模型->定义交互图->定义设计类图 1.分析: 分析需求,对项目的结构有一个大致的定义 2.定义用例: 用例是需求分析的一种工 ...

  4. 引入easyui的404问题

    直接在webapp创建css文件夹添加easyui 引入: <link rel="stylesheet" type="text/css" href=&qu ...

  5. 【转】HBase shell命令与 scan 过滤器

    Hbase 常用shell命令 https://www.cnblogs.com/i80386/p/4105423.html HBase基础之常用过滤器hbase shell操作 https://www ...

  6. Ubuntu中安装memcache并且在Python中连接memcache

    1.安装memcache到Ubuntu. PS:依赖libevent,需要提前安装 yum install libevent-devel #centos中使用这个 apt-get install li ...

  7. redis-benchmark使用说明

    Redis-benchmark为Redis性能测试工具. 指令说明: Usage: redis-benchmark [-h <host>] [-p <port>] [-c &l ...

  8. python-爬虫-史书典籍

    import requests import os from lxml import html import time def get_title_url(tree): '''一级 获取标题''' # ...

  9. BUUOJ misc 二维码

    一个二维码,扫一下是提示:secret is here 用binwalk看一下: binwalk QR_code.png DECIMAL HEXADECIMAL DESCRIPTION ------- ...

  10. [转] DLL加载方式

    静态加载: 如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头文件中 #pragma comment(lib ...