當型循環和直到型循環文法
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 & </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 < 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>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>>=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