天天看點

shell腳本執行個體之Charpter8-14

要求:使用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&lt;=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&lt;=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&lt;=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&lt;=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&lt;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&lt;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