iT邦幫忙

2

[Shell Script] Day07-for 迴圈的第一種形式

  • 分享至 

  • xImage
  •  

迴圈在寫 shell script 中根程式語言一樣,佔了非常重要的部分。為什麼呢?因為我們種是再做重複的動作,重複的是情。既然要讓電腦幫我們做事,那麼重複的動就交給迴圈,讓電腦陷入無限的輪迴吧哈哈哈不是啦!是有限的迴圈,有限的重複動作,我們只要專注在叫他們做就可以了!!嘿嘿開心
雖然只是簡單的 script ,但是也有像程式語言一樣的迴圈功能:

  1. for
  2. while
  3. until

迴圈在 scrip 中可是扮演著非常重要的角色,因為他可以幫助我們省去非常多打字的時間。也可以讓我們的 script 看起來很漂亮,很好維護。

首先來介紹 for :
for 的形式有兩種:(突然想到絲絲有兩種XD

# 樣式1
for VARIABLE in 清單
do
	command1
	command2
	…
Done

#樣式2
for (( expr1; expr2; expr3 ))
do
	command1
	command2
	…
done

樣式1代表的是,每次的迴圈中,都會拿清單裡的一個變數來使用,直到變數使用完為止。
樣式2代表的是,跟一般的程式語言相同。
expr1 代表初始值,也就是在整個循環中只做一次。
expr2 代表結束判斷,當expr2為False的時候,迴圈就終止。
expr3 代表步進值,每做一次迴圈就會執行一次。

今天先來看樣式1的範例吧:

#!/bin/bash

NO=1
for i in A B C D E
do
    echo "Loop $NO. $i"
    NO=$(($NO+1))
done

想想看,這個範例的結果會是什麼呢?
我在第2行使用了一個變數 NO,並且在迴圈中讓這個變數每執行一次就加1(第7行)。

$(( xxx )) 這樣代表的是要取得執行 xxx 的結果,在我們的範例中 $(( $NO+1 )) 就代表使用變數 NO 的值+1之後,再取得其結果。

所結果很明顯的就出來啦:

還有一個很好用,就是我們把 A B C D E 改成萬用字元 *,大家想想結果會怎樣?

#!/bin/bash

NO=1
for i in <strong>*</strong>
do
    echo "Loop $NO. $i"
    NO=$(($NO+1))
done

在此之前我們先用 ls 看一下我們所在的目錄下目前有哪些檔案:

記住了嗎?我們目前的目錄中有這些檔案。那我們來執行看看將 A B C D E 改成萬用字元 * 後的變化:

發現了嗎?原來萬用字元代表的就是當前目錄下所有檔案的意思,這個可是非常好用的喔。所以,如果我們在迴圈中想要將所有 test 開頭的檔案名稱全部改成 example 開頭,那該怎麼做呢?

我相信邦友們這麼聰明,一定馬上就想到,那就明天再分享囉! 讚讚讚

鐵人賽文章分享
上一篇 清晰好還是朦朧好呢
下一篇 for 迴圈的第二種形式


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言