要求:使用while循環編寫腳本,使其完成以下功能:
1.提示使用者輸入兩個整數:firstNum和secondNum(firstNum的值一定要小于secondNum)
2.輸出所有介于這兩數之間的奇數
3.輸出所有介于這兩數目之間偶數之和
先看一下如何用for循環實作:
<code>#!/bin/bash</code>
<code>#chapter_8-14</code>
<code>echo</code> <code>"Please input two integer numbers(the first must be smaller than the second):"</code>
<code>read</code> <code>firstNum secondNum</code>
<code>#定義函數fun0,判斷輸入的兩個數的大小</code>
<code>fun0()</code>
<code>{</code>
<code> </code><code>while</code> <code>[ $1 -lt $2 ]</code>
<code> </code><code>do</code>
<code> </code><code>echo</code> <code>"Your input:"</code> <code>"$firstNum "</code><code>"$secondNum"</code>
<code> </code><code>break</code>
<code> </code><code>done</code>
<code>}</code>
<code>fun0 $firstNum $secondNum</code>
<code>#定義一個數組,将兩個數之間的所有數寫入數組</code>
<code>declare</code> <code>-a arr1</code>
<code>i=firstNum</code>
<code>arr1=($(</code>
<code>for</code> <code>((i=firstNum;i<=secondNum;i++))</code>
<code>do</code>
<code> </code><code>echo</code> <code>-n </code><code>"$i "</code>
<code>done</code>
<code>))</code>
<code>length=${</code><code>#arr1[@]}</code>
<code>sum_even=0</code>
<code>if</code> <code>[[ </code><code>"arr1[0]%2"</code> <code>-</code><code>eq</code> <code>0 ]]</code>
<code>then</code>
<code> </code><code>for</code> <code>((j=0;j<=length;j=j+2))</code>
<code> </code><code>let</code> <code>sum_even+=arr1[j]</code>
<code> </code><code>echo</code> <code>-n </code><code>"${arr1[j+1]} "</code>
<code> </code><code>done</code>
<code> </code><code>echo</code> <code>"偶數之和為:"</code> <code>$sum_even</code>
<code>else</code>
<code> </code><code>for</code> <code>((k=0;k<=length;k=k+2))</code>
<code> </code><code>let</code> <code>sum_even+=arr1[k+1]</code>
<code> </code><code>echo</code> <code>-n </code><code>"${arr1[k]} "</code>
<code> </code><code>echo</code> <code>"偶數之和為:"</code> <code>"$sum_even "</code>
<code>fi</code>
腳本執行效果:
<code>[root@localhost charpter8]</code><code># sh 8-14</code>
<code>Please input two integer numbers(the first must be smaller than the second):</code>
<code>3 29</code>
<code>Your input: 3 29</code>
<code>3 5 7 9 11 13 15 17 19 21 23 25 27 29 偶數之和為: 208</code>
<code>8 29</code>
<code>Your input: 8 29</code>
<code>9 11 13 15 17 19 21 23 25 27 29 偶數之和為: 198</code>
while 循環實作:
<code>echo</code> <code>"Pleas input two integer number(the first num must be smaller than the second one):"</code>
<code> </code><code>while</code> <code>[ $1 -lt $2 ]</code>
<code> </code><code>do</code>
<code> </code><code>echo</code> <code>"Your input is:"</code> <code>"$firstNum "</code> <code>"$secondNum"</code>
<code> </code><code>break</code>
<code> </code><code>done</code>
<code>let</code> <code>i=firstNum</code>
<code>arr1=(</code>
<code> </code><code>$(</code>
<code> </code><code>while</code> <code>((i<=secondNum))</code>
<code> </code><code>do</code>
<code> </code><code>echo</code> <code>"$i "</code>
<code> </code><code>let</code> <code>i++</code>
<code> </code><code>done</code>
<code> </code><code>)</code>
<code>)</code>
<code>j=0</code>
<code>k=0</code>
<code> </code><code>while</code> <code>((j<length))</code>
<code> </code><code>echo</code> <code>-n </code><code>"${arr1[j+1]} "</code>
<code> </code><code>let</code> <code>sum_even+=arr1[j]</code>
<code> </code><code>let</code> <code>j=j+2</code>
<code> </code><code>echo</code> <code>"偶數之和:$sum_even"</code>
<code> </code><code>while</code> <code>((k<length))</code>
<code> </code><code>echo</code> <code>-n </code><code>"${arr1[k]} "</code>
<code> </code><code>let</code> <code>sum_even+=arr1[k+1]</code>
<code> </code><code>let</code> <code>k=k+2</code>
<code> </code><code>echo</code> <code>"偶數之和:$sum_even"</code>
<code>root@localhost charpter8]</code><code># sh 8-14-1</code>
<code>Pleas input two integer number(the first num must be smaller than the second one):</code>
<code>31 38</code>
<code>Your input is: 31 38</code>
<code>31 33 35 37 偶數之和:140</code>
<code>[root@localhost charpter8]</code><code># sh 8-14-1</code>
<code>30 39</code>
<code>Your input is: 30 39</code>
<code>31 33 35 37 39 偶數之和:170</code>
兩種循環實作發現大緻相似.
本文轉自 marbury 51CTO部落格,原文連結:http://blog.51cto.com/magic3/1429193