zoukankan      html  css  js  c++  java
  • bash shell中的数学计算

    简介

    在写shell脚本的时候会用到很多的数学运算,简单的一个游标+1 -1, 或者更多一点的浮点运算等,shell中数学计算稍麻烦,我想每个人都试过var=1+1 或者var=$xxx+1这类错误。 下面对shell中做数学计算小做总结

    示例

    • 使用expr整数运算
    > var=1
    > var=`expr $var + 1`
    > echo $var
    2

    其他的减乘除类似, 要注意乘法中的*号需要做转义\*即可

    • 使用bash内建命令let
    > var=2
    > let "var=var+1"
    > echo $var
    3
    > let "var=(2+2-1)/2" 
    > echo $var
    1
    • 使用大括号或者小括号
    > var=3
    > var=$((var+1))
    > echo $var
    4
    > var=$[var+1]
    > echo $var
    5
    • 浮点运算可以用bc或者awk等程序

    bc更常用, 对运算来说也更好用一些,可以直接命令行使用:

    > bc
    bc 1.06
    Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'. 
    1+1
    2
    1+1.1
    2.1
    1.1212*1.12
    1.2557

    也可以在标准输入作为输入,bc会把结果输出到标准输出:

    > echo "2+1-5*1.111" | bc
    -2.555

    还可以用here-doc的方式把表达式传给bc

    > bc <<< "1+2+3+3.3333" 
    9.3333

    bc在计算上还有很多强大的功能, 具体信息可以看下manpage,比如scale

    > echo "scale=1;(1/3)" | bc 
    .3
    > echo "scale=10;(1/3)" | bc
    .3333333333

    awk也可以做算数计算,也支持浮点计算:

    > var=1
    > var=`echo "$var 5"|awk '{printf("%g",$1+$2)}'` 
    > echo $var
    6
  • 相关阅读:
    C#之获取本地IP地址
    C#中对Excel进行操作
    C#中的TCP通讯与UDP通讯
    Flex 学习
    正则表达式实例
    sass调试--页面看到sass文件而不是css文件问题
    webpack+vue-loader 在单独.vue组件中使用sass-loader编译sass报错问题not a valid Win32 applictation
    SVG图案填充-Pattern
    jQuery小技巧
    代码整洁一
  • 原文地址:https://www.cnblogs.com/shapherd/p/2827733.html
Copyright © 2011-2022 走看看