• 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中的变量

  • 相关阅读:
    204. 计数质数
    236. 二叉树的最近公共祖先
    优先队列和哈夫曼树
    185. 部门工资前三高的所有员工(求组内前几的值)
    部门工资最高的员工(求组内最大值)
    回调函数的案例
    单链表
    动态数组
    一致性哈希算法的基本原理
    只用2GB内存在20亿个整数中找到出现次数最多的数
  • 原文地址:https://www.cnblogs.com/chaoguo1234/p/5665192.html
Copyright © 2020-2023  润新知