2010年11月17日星期三

在bash里进行数学运算

在bash里进行数学运算



KeyShortCuts

  • o - login/logout
  • e - edit
  • h - histories
  • v - recently views
  • m - recently modifies
  • w - go home
  • [ - go to previous
  • ] - go to next
  • u - lock/unlock
  • c - passwd
  • Accesskey(s) - save
  • AccessKey(c) - discard



在bash里进行使用运算表达式的方式很多,也很简单,看例子即可:
  • 把65的平方赋值给index变量
    • ((index=65*65))
    • let index=65*65
    • index=`expr  65 \* 65`
  • 对index进行递增
    • ((index++))
    • let index++


第一个例子里,用到了三种不同的方法,效果是一样的。需要注意的是第三种方法。该方法结合了expr命令和执行操作符`。expr的作用是对后面的运算表达式计算,然后把结果输出,而`用来获得输出,返回给index。在expr后的表达式里,各个部分必须用空格分开,一些特殊字符,例如乘号*必须在前面加个反斜杠转义。

用expr不能直接进行对变量的自增操作,所以在第二个例子里,我没有用到expr这种方式。

let和(())的作用基本一样,唯一的不同是,let后面的运算表达式各个部分不能有空格隔离开,这个和expr正好相反。而(())里面的运算表达式,空格是无关紧要的,存在与否都不会对运算有影响。

bash里的算术表达式有如下操作符:

- +
    减,加

! ~
    逻辑否,反位操作

* / %
    乘,除,取模

+ -
    addition, subtraction

<< >>
    left and right bitwise shifts

<= >= < >
    comparison

== !=
    equality and inequality

&
    bitwise AND

^
    bitwise exclusive OR

|
    位操作或

&&
    逻辑与

||
    逻辑或

= *= /= %= += -= <<= >>= &= ^= |=
    赋值

没有评论:

发表评论