天天看點

while與unile

當型循環和直到型循環文法

while 條件句

文法:

while  條件

    do

    指令...

done

until 條件句

until  條件

範例1:每隔2秒記錄一次系統負載情況

<code>#!/bin/bash</code>

<code>while</code> <code>true</code>

<code>do</code>

<code>uptime</code>

<code>sleep</code> <code>2</code>

<code>done</code>

<code>執行結果:</code>

<code> </code><code>16:28:15 up 7 days,  6:47,  2 </code><code>users</code><code>,  load average: 0.06, 0.03, 0.00</code>

<code> </code><code>16:28:17 up 7 days,  6:47,  2 </code><code>users</code><code>,  load average: 0.06, 0.03, 0.00</code>

<code> </code><code>16:28:19 up 7 days,  6:47,  2 </code><code>users</code><code>,  load average: 0.06, 0.03, 0.00</code>

<code> </code><code>16:28:21 up 7 days,  6:47,  2 </code><code>users</code><code>,  load average: 0.05, 0.02, 0.00 </code>

<code> </code> 

<code> </code><code>提示:</code><code>while</code> <code>true</code><code>表示條件永遠為真,因為會一直運作,像死循環一樣,但是我們稱呼為守護程序</code>

<code> </code><code>sh while01.sh &amp;   </code><code>#此執行是在背景執行</code>

範例2:通過while語句計算從1加到100之和

<code>法1</code>

<code>i=0</code>

<code>sum</code><code>=0</code>

<code>while</code> <code>[ $i -</code><code>le</code> <code>100 ] </code>

<code>  </code><code>let</code> <code>sum</code><code>=</code><code>sum</code><code>+i</code>

<code>  </code><code>let</code> <code>i=i+1</code>

<code>echo</code> <code>$</code><code>sum</code>

<code>[root@XCN </code><code>while</code><code>]</code><code># sh while2.sh </code>

<code>5050</code>

<code>法2</code>

<code>i=1</code>

<code>while</code> <code>((i &lt; 101))</code>

<code>  </code><code>((</code><code>sum</code><code>=</code><code>sum</code><code>+i))</code>

<code>  </code><code>((i++))</code>

思路:

+ i=0

+ sum=0

+ '[' 0 -le 5 ']'

+ let sum=sum+i

+ let i=i+1

+ '[' 1 -le 5 ']'

+ '[' 2 -le 5 ']'

+ '[' 3 -le 5 ']'

+ '[' 4 -le 5 ']'

+ '[' 5 -le 5 ']'

+ '[' 6 -le 5 ']'

+ echo 15

15

範例3:利用while循環列印出10,9,8....1

<code>i=10</code>

<code>while</code> <code>((i&gt;0))</code>

<code>  </code><code>echo</code> <code>$i</code>

<code>  </code><code>let</code> <code>i=i-1</code>

<code>[root@XCN </code><code>while</code><code>]</code><code># sh while4.sh </code>

<code>10</code>

<code>9</code>

<code>8</code>

<code>7</code>

<code>6</code>

<code>5</code>

<code>4</code>

<code>3</code>

<code>2</code>

<code>1</code>

範例4:手機充值10,每發一次短信(輸出目前餘額)話費1角5分錢,當餘額低于1角5分錢不能發短信,提示餘額不足,請充值;

解答:機關換算。統一機關,統一成整數

10元=1000分

<code>sum</code><code>=1000</code>

<code>i=15</code>

<code>while</code> <code>((</code><code>sum</code><code>&gt;=i)) </code>

<code> </code><code>((</code><code>sum</code><code>=</code><code>sum</code><code>-i))</code>

<code>  </code><code>echo</code> <code>"send message.$sum"</code> 

<code>echo</code> <code>",epmty is not enough:$sum"</code>

<code>end message.325</code>

<code>send message.295</code>

<code>send message.265</code>

<code>send message.235</code>

<code>send message.205</code>

<code>send message.175</code>

<code>send message.145</code>

<code>send message.115</code>

<code>send message.85</code>

<code>send message.55</code>

<code>send message.25</code>

<code>,epmty is not enough:10</code>

本文轉自 baishuchao 51CTO部落格,原文連結:http://blog.51cto.com/baishuchao/1943253