天天看點

Linux之Bash基礎特性算術運算(5)

算術運算

    算術運算:數的加、減、乘、除以及乘方開方等數學運算,差別于幾何運算。

算術運算的符号

<a href="https://s4.51cto.com/wyfs02/M02/9D/7D/wKioL1mBI7aBHmC4AAFyTuNWOrY877.jpg" target="_blank"></a>

1)加法:同類事物的重複或累計,是數字運算的開始,不同類比如一個蘋果+一個橘子其結果隻能等于二個水果就存在分類與歸類的關系

3)乘法:加法的特殊形式;相同的數加起來的快捷方式。其運算結果稱為積。從哲學角度解析,乘法是加法的量變導緻的質變結果

    公式:被除數÷除數=商(a÷b=c)

5)求模:取模運算(“Modulo Operation”)和取餘運算(“Complementation ”)兩個概念有重疊的部分但又不完全一緻。主要的差別在于對負整數進行除法運算時操作不同。取模主要是用于計算機術語中。取餘則更多是數學概念。

    公式:

        1.求 整數商: c = a/b;

        2.計算模或者餘數: r = a - c*b.

        linux中: r=a%b (r&lt;b)

6)水仙花數:水仙花數是指一個 n 位正整數 ( n≥3 ),它的每個位上的數字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。

Linux中算術運算

    将資料從記憶體中取到cpu的寄存器,進行運算後,存回記憶體中,

        存回原處: let count=$count+1

        存到另一處: let var=$count+1

    1)let指令

格式: let var=算術運算表達式

1

2

3

<code>$ help </code><code>let</code>

<code>let</code> <code>is a shell </code><code>builtin</code>

<code>let</code><code>: </code><code>let</code> <code>var=算術運算表達式</code>

4

5

<code>$ num1=3</code>

<code>$ num2=10</code>

<code>$ </code><code>let</code> <code>var=$num1+$num2</code>

<code>$ </code><code>echo</code> <code>$var</code>

<code>13</code>

    2)變量引用實作指派

格式:

    var=$[算術運算表達式]

    var=$((算術運算表達式))

    echo $[算術運算表達式]

    echo $((算術運算表達式))

<code>$ var=$[$num2%$num1]</code>

<code>1</code>

<code>$ </code><code>echo</code> <code>$(($num2%$num1))</code>

    3)指令引用實作指派,(指令中的運算符号,*會被解釋為特殊字元,需要轉義)

格式: 

    var=$(expr 被操作數 運算符 操作數)

<code>$ var=$(</code><code>expr</code> <code>$num2 \* $num1)</code>

<code>30</code>

<code>$ </code><code>echo</code> <code>$(</code><code>expr</code> <code>$num2 \* $num1)</code>

bash内建随機數生成器:$RANDOM (2^31-1)

    求任意範圍内的任意随機數: $A

        1) let var=$RANDOM%$A

<code>$ A=60</code>

<code>$ </code><code>let</code> <code>var=$RANDOM%$A</code>

<code>58</code>

        2) var=$[$RAMDOM%60]

<code>[root@izpo45bh60h6bsz ~]</code><code># var=$[$RANDOM%60]</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># echo $var</code>

<code>59</code>

        3) var=$(($RANDOM%60))

<code>[root@izpo45bh60h6bsz ~]</code><code># var=$(($RANDOM%60))</code>

        4) var=$(expr $RANDOM % 60)

<code># var=$(expr $RANDOM % 60)</code>

<code># echo $var</code>

<code>16</code>

将變量存回原處:将變量中存儲的資料取出,進行運算後,放回原處

6

7

<code>[root@izpo45bh60h6bsz ~]</code><code># count=1</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># let count=$count+1</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># echo $count</code>

<code>2</code>

<code>3</code>

增強型指派:将變量中存儲的資料取出,進行運算後,放回原處

    符号: += -= *= /= %= ^=

    count+=1  相當于  count=$count+1

    count-=1  相當于  count=$count-1

    count*=1  相當于  count=$count*1

    ....

<code>[root@izpo45bh60h6bsz ~]</code><code># let count+=1</code>

<code>4</code>

<code>5</code>

自增、自減

     count++   相當于  count+=1

    count--      相當于 count-=1

<code>[root@izpo45bh60h6bsz ~]</code><code># let count++   #相當于let count+=1</code>

<code>6</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># let count--   #相當于let count-=1  </code>

<code></code>

本文轉自 lccnx 51CTO部落格,原文連結:http://blog.51cto.com/sonlich/1952897,如需轉載請自行聯系原作者

繼續閱讀