美文网首页
在脚本中进行数字运算

在脚本中进行数字运算

作者: Peng_001 | 来源:发表于2020-06-11 16:53 被阅读0次

    linux 的数字运算

    linux 提供以下几种数字运算的方式

    • expr
    • [] 通过方括号将数字运算结果赋值给变量。
    • bc 计算器

    而通常来说,bc 计算器使用是最方便的。

    脚本中使用bc

    我们可以利用管道的特性,将内容传递给bc 计算器,再将返回的值赋值给变量。
    基本格式:variable=$(echo "options; expression" | bc)

    尝试一下,我们可以通过scale 来设定bc 的参数。

    $ cat test8
    #!/bin/bash
    a=$(echo "scale=4;23/3" | bc)
    echo "The answer is $a."
    $ test8
    The answer is 7.6666.
    

    当然,对于表达式,我们也可以不局限于只使用数字,也可以使用shell 脚本里定义好的变量。

    应用不同的变量,我们可以进行复杂的运算。对于较短的运算,还不是特别麻烦,但一旦涉及的运算内容复杂起来了,不断的使用bc 进行赋值就显得非常麻烦了。

    这时候我们可以使用内联输入重定向。标准格式如下:

    variable=$(bc << EOF
    options
    statements
    expressions
    EOF
    )
    

    尝试一下:

    $ cat test9
    #!/bin/bash
    v1=10.33
    v2=12.31
    v3=213.22
    v4=232.21
    
    v5=$(bc << eof
    scale=4
    a1=($v1/$v2)
    a2=($v3/$v4)
    a1+a2
    eof
    )
    
    echo "The anwser is $v5."
    

    如果不使用内联输入重定向的情况。

    $ cat test10
    #!/bin/bash
    v1=10.33
    v2=12.31
    v3=213.22
    v4=232.21
    
    a1=$(echo "scale=4;$v1/$v2"|bc)
    a2=$(echo "scale=4;$v3/$v4"|bc)
    
    v5=$(echo "scale=4;$a1+$a2"|bc)
    
    echo "The anwser is $v5."
    

    对比不难发现,使用重定向输入会简化许多。

    相关文章

      网友评论

          本文标题:在脚本中进行数字运算

          本文链接:https://www.haomeiwen.com/subject/qekbtktx.html