iT邦幫忙

DAY 11
3

快快樂樂學會讓電腦幫我做事系列 第 8

[Shell Script] Day11-迴圈 while 的三個範例

在介紹完 while 迴圈的三個樣子之後,緊接著當然是對這三個樣子作範例囉!這次的範例應該會有趣一些~
while] 迴圈能有什麼樣的應用呢?其實應用非常多,而且很常用到。

比如說,我想執行一個測試程式,我希望他跑個10小時,那該怎麼做?
當然就是用 while 啦!

比如說我想要編輯一份文件,在文件中若出現關鍵字,我就需要根據那關鍵字查詢對應表,在接著將查到的結果插入該文件關鍵字那行之下,也是可以用 while 來達成。

以下就根據昨天介紹的三個 while樣式來寫三個例子吧。

第一種:在條件成立時,就會不斷執行迴圈內容

#!/bin/bash

echo -n "請問你要幾個[妹]:"
read MA

INDEX=1
# 當條件成立,就會不斷執行(le表示小於或等於)
while [ $INDEX -le $MA ]
do
		# 輸出 妹
        echo -n "妹 "
		# INDEX 的值會加1
        (( INDEX++ ))
done
echo ""

echo "已經給你 $MA 個妹囉 了!"

執行結果:

第二種:無窮迴圈,直到外力介入才會停止
(在這次的範例中是以 Ctrl + C 來終止迴圈,下次的範例會用另一種方式來終止)

#!/bin/bash

echo "按下 Ctrl + C 中斷…"

LENGTH=0
while :
do
        echo -ne "\r["
        sleep 0.2
        while [ $LENGTH -le 10 ]
        do
                sleep 0.1
                echo -n ">"
                (( LENGTH++ ))
        done
        LENGTH=0
        echo -en "\r                          "
done

看看結果,在沒按下Ctrl+C 時,他是不會停的:

第三種:輸入一文字檔,在迴圈中一次只讀取一行:
首先我們先準備我們要輸入的文字檔:『story.txt』,內容是:

再來是我們的範例程式,我們會讀取每一行,接著在每一行前面加上行號:

#!/bin/bash

echo -n "請輸入要讀取的文字檔名稱:"
read FILE_NAME

INDEX=1
while read line
do
        echo "$INDEX: $line"
        (( INDEX++ ))
done <$FILE_NAME

執行結果:

有沒有覺得很簡單阿!!就是這麼簡單!! 讚

鐵人賽文章分享
上一篇 迴圈 while 的三個樣子
下一篇 與while相反的until


上一篇
[Shell Script] Day10-迴圈 while 的三個樣子
下一篇
[Shell Script] Day12-與 while 相反的 until
系列文
快快樂樂學會讓電腦幫我做事27

尚未有邦友留言

立即登入留言