代码之家  ›  专栏  ›  技术社区  ›  Vijay

shell脚本算术运算

  •  4
  • Vijay  · 技术社区  · 16 年前

    一般来说,我将在shell脚本中使用expr来执行算术运算。

    有没有一种方法可以在shell脚本中进行算术运算而不使用expr?

    3 回复  |  直到 16 年前
        1
  •  3
  •   Vijay    16 年前

    如果你用的是ksh,你试过读“man ksh”吗?

    命令typeset-i可用于指定变量必须被视为整数,例如typeset-i MYVAR指定变量MYVAR是整数而不是字符串。在typeset命令之后,尝试将非整数值赋给变量将失败:

       $ typeset -i MYVAR
       $ MYVAR=56
       $ echo $MYVAR
       56
       $ MYVAR=fred
       ksh: fred: bad number
       $
    

       $ let ans=$MYVAR+45
       echo $ans
       101
       $
    

    上述表述也可以写成:

       $ echo $(($MYVAR+45))
       101
       $
    

    包含在$((and))中的任何内容都被kornshell解释为一个算术表达式

        2
  •  4
  •   jim mcnamara    16 年前

    +-/*有符号长整数变量+/-2147483647。

    用awk表示双精度,15个重要数字,它也做sqrt。

    使用bc-l扩展精度高达20位有效数字。

    a=$(( 13 * 2 ))
    a=$(( $2 / 2 ))
    b=$(( $a - 1 ))
    a=(( $a + $b ))
    

    它也有sqrt,cos,sin。。。。请参见:

    http://people.cs.uu.nl/piet/docs/nawk/nawk_toc.html

    bc有一些已定义的函数和扩展的预测,可通过-l选项使用:

    bc-l公司

    例子:

    echo 'sqrt(.977)' | bc -l
    
        3
  •  0
  •   Popup    9 年前

    壳内建的精度和范围 $(( <expr> )) expr ,它似乎以独立于平台的方式支持更大的整数)。

    ^ 是大多数shell中的有效运算符,它并不表示“to the power of”,而是表示XOR。)

    另外,在这方面,有些炮弹更容易发射。例如,Zsh允许浮点操作,例如 $(( 10/3.0 ))