zoukankan      html  css  js  c++  java
  • Linux之Shell的算术运算

    在Bash的算术运算中有以下几种方法:
    名称                语法                    范例
    算术扩展            $((算术式))              r=$((1+2*3))
    使用外部程序expr    expr 算术式              r=`expr 1+2*3`
    使用$[]             $[算术式]                r=$[1+2]
    使用内置命令        declare -i 变量=算术式    declare -i r=1+2*3
    使用内置命令let     let 算术式                let r=1+2


    i++运算后加1,i--运算后减1
    ++i运算前加1,--i运算前减1

    一、算术扩展
    算术扩展的语法是:$((表达式)),如果表达式中有变量,该变量之前最好不要加$这个符号,以免变量不存在造成语法错误,例:
    unset i
    echo $((2+$i))
    由于变量i不存在,所以会变成 echo $((2+)),这样语法就错误了。
    但如果写成echo $((2+i)),((2+i))是一个合法的算术式,就算变量不存在,仍可正确计算。

    a=5
    a=$((++1)) a的值加1后,在赋值给a
    a=$((--1)) a的值减1后,在赋值给a
    a=$((3+a--))运算后减1
    二、使用外部程序expr做算术运算
    外部程序expr本来的作用,是在“标准输出”显示表达式的值。这个是外部程序,和Shell没有关系,所以移植性非常好,
    如果注重跨平台,那么可以在脚本本使用expr代替其他算术表达式。

    expr 3 + 4  
    它会在屏幕上显示7,注意"+"两边有空格。
    在使用expr时,要特别"表达式"中是否包含shell的特殊字符,如*、|、<、>、!、&、(、),要使用""来转义。
    1、r=`expr 参数1 |参数2`
    |代表"或"之意.如果”参数1“存在、非空、不是0,则传回”参数1“的值,否则传回"参数2"的值。 
    r=`expr 3 | 0` r的值为3
    r=`expr 0 | 2` r的值为2
    2、r=`expr 参数1 &参数2`
    如果"参数1"和"参数2"都存在、非空、不是0,则传回"参数1"的值,否则传回0.
    r=`expr 3 & 0` r的值为0
    3、比较
    算术            是否成立    r的值
    r=`expr 1 < 2`      是        1 
    r=`expr 3 <= 2`     否        0 
    r=`expr 2 = 2`      是        1 
    r=`expr 3 != 2`     是        1 
    r=`expr 3 >= 2`     是        1 
    r=`expr 3 > 2`      是        1 
    4、加
    r=`expr 4 + 5` r的值为9
    5、减
    r=`expr 3 - 5` r的值为-2
    6、乘
    r=`expr 3 * 5` r的值为15
    7、除
    r=`expr 32 / 5` r的值为6(余数无条件舍去)
    8、乘方
    expr没有乘方的功能
    9、求余数
    r=`expr 32 % 5` r的值为2
    10、计算字符串长度
    r=`expr length "hello"`  r的值为5
    三、用$[]做算术运算
    使用$[]做算术运算和$(())类似
    加:r=$[4+5]    r的值为9
    减:r=$[4-5]    r的值为-1
    乘:r=$[4*5]    r的值为20
    除:r=$[5/2]    r的值为2
    余数:r=$[5%2]  r的值为1
    乘方:r=$[2**3] r的值为8

    四、使用declare、let做算术运算
    declare为bash shell的内置命令。
    declare -i I
    I=5+4 
    echo $I 
    因为I事先被定义为整数(算术运算),所以$I的值为9,而不再是字符串5+4
    当被定义为整数后,便可以进行加、减、乘、除..等操作
    五、用let做算术运算

    let为bash shell的内置命令。

    let I=8+4*5
    echo $I 
    此时输出的值为28
    let表明后边的直接说一个算术式。
    也可使用空格符让表达式可读性高一点,但这时必须使用引号包括表达式才行。
    let "i = i + 5"

    本文出自 “生命不息,奋斗不止!” 博客,请务必保留此出处http://linuxnote.blog.51cto.com/9876511/1641189

  • 相关阅读:
    FPGA学习之基本结构
    凸优化和机器学习
    第6篇如何访问pod
    吉日嘎拉DotNet.BusinessV4.2中的一处bug,及我的修复和扩展
    吉日嘎拉C#快速开发平台V4.0到V4.2升级记
    布隆过滤器简介及实现-----源自数学之美
    poj [1753]
    Zookeeper Hello World
    获取用户真实IP,php实现
    mysql中engine=innodb和engine=myisam的区别
  • 原文地址:https://www.cnblogs.com/newcaoguo/p/5980913.html
Copyright © 2011-2022 走看看