• shell中的数学运算


    shell中要进行数学运算通常有3中方法:

    expr命令

    比如 expr 1 + 6就会返回7,使用expr的缺点就是碰到乘法运算,或者加括号(因为它们在shell中有其他意义),需要使用转义,比如:expr ( 2 + 3)  * 5,这样就会使得表达式很难看

    $[expression]命令

    使用$[expression]命令也可以进行数学计算,并且比expr方便的是*和括号可以不用转义,比如仍然计算(2 + 3) * 5,可以直接写为:

    result=$[ (2 + 3) * 5 ]
    

     上面两种操作符expr命令和$[expression]都只能处理整数,而无法处理浮点数,要进行浮点数运算,就必须借助shell当中的bc命令。

    bc命令

    对于简单的运算,可以使用如下形式:

    result=`echo "options;expression" | bc`

    其中options通常都是使用bc里面的变量scale设置浮点数精度(scale默认为0),expression为算数表达式,比如计算3.6 * 7.2,可以写为:

    result=`echo "scale=3;3.6 * 7.2" | bc`
    

     这种形式对于简单的计算很方便,但是如果涉及到复杂的,可以使用下面的形式:

    result=`bc << EOF

    options

    expression

    EOF`

    其中<<是内联输入重定向运算符,其后跟的是结束标志(可以是任何字符或者字符串),上面的表达式表示给bc命令提供输入,直到遇到EOF为止;options和expression同上。

    比如,仍然是计算3.6 * 7.2,可以写为:

    result=`bc << EOF
    scale = 3
    var1 = 3.6
    var2 = 7.2
    var1 * var2
    EOF`
    

     使用bc命令需要注意两点:

    1) bc命令里面可以自己定义变量,如上面的var1和var2,但是只能在bc命令里面使用,当bc命令结束时,这些变量无法访问,同时在bc里面访问这些变量无需带$符

    2)bc命令里面可以访问shell中的变量

  • 相关阅读:
    Request Payload 和 Form Data 的区别
    es6 字符串模板拼接和传统字符串拼接
    TypeScript
    Jquery的$(document).click() 在iphone手机上失效的问题
    Vuex 是什么?
    什么是JSONP?
    git 放弃本地修改操作
    CSS3+HTML5+JS 实现一个块的收缩&展开动画
    Promise学习笔记(一)
    React@16.13.1配合antd UI使用,自定义主题
  • 原文地址:https://www.cnblogs.com/chaoguo1234/p/5665192.html
Copyright © 2020-2023  润新知