15. Bash 中的 For 循環(huán)
在編程語(yǔ)言中,循環(huán)用于重復(fù)執(zhí)行代碼塊,直到滿(mǎn)足定義的條件。 這有助于執(zhí)行重復(fù)性任務(wù)。 主要有 3 種類(lèi)型的循環(huán),for、do 和 do-while。 在本教程中,我們將討論 shell 腳本中的 for 循環(huán)。
語(yǔ)法
for 變量 in 循環(huán)參數(shù)1 循環(huán)參數(shù)2 循環(huán)參數(shù)3do//循環(huán)代碼塊done
for 循環(huán)對(duì)所有定義的參數(shù)執(zhí)行一次。循環(huán)范圍以關(guān)鍵字“do”開(kāi)始,以另一個(gè)關(guān)鍵字“done”結(jié)束。所有語(yǔ)句都必須寫(xiě)在循環(huán)范圍內(nèi)。參數(shù)值進(jìn)行初始化,該值可以在 for 循環(huán)范圍內(nèi)訪問(wèn)。這些參數(shù)可以是任意數(shù)字、字符串等。
15.1 Bash – For 循環(huán)示例
#!/bin/bashfor i in 1 2 3 4 5do echo “$i”done
您還可以使用數(shù)字值在 bash 腳本中使用 for 循環(huán)定義范圍。
#!/bin/bashfor i in {1..5}do echo “$i”done
參數(shù)也可以是一個(gè)字符串,如:
#!/bin/bashfor day in 星期一 星期二 星期三 星期四 星期五 星期六 星期天do echo “$day”done
提醒
多個(gè)參數(shù)之間, 應(yīng)該以空格間隔
15.2 Bash – C 風(fēng)格的 For 循環(huán)
可以在 bash 腳本中編寫(xiě) for 循環(huán),類(lèi)似于 c 編程中的 for 循環(huán)。例如打印 1 到 10 個(gè)數(shù)字。
#!/bin/bashfor ((i=1; i<=10; i++))do echo "$i"done
15.3 Bash – 帶文件的 For 循環(huán)
您可以在指定目錄下的for循環(huán)中一一訪問(wèn)文件名。例如,從當(dāng)前目錄讀取所有文件。
#!/bin/bashfor fname in *do ls -l $fnamedone
16. Bash-While 循環(huán)
與 for 循環(huán)類(lèi)似,while 循環(huán)也是入口限制循環(huán)。這意味著在執(zhí)行while循環(huán)之前檢查條件。 While 循環(huán)也能夠像 for 循環(huán)一樣完成所有工作。
語(yǔ)法
while [條件]do//執(zhí)行代碼塊done
Bash – While 循環(huán)示例
例如,以下循環(huán)將被執(zhí)行 5 次并在變量 num 的值大于 5 時(shí)終止。
#!/bin/bashnum=1while [ $num -le 5 ]do echo “$num” let num++done
Bash – 無(wú)限循環(huán)
無(wú)限 for 循環(huán)也可以稱(chēng)為永無(wú)止境的循環(huán)。以下循環(huán)將連續(xù)執(zhí)行,直到使用 CTRL+C 強(qiáng)制停止。
#!/bin/bashwhile truedo echo “按 CTRL+C 退出”done
您還可以通過(guò)在腳本中添加一些條件退出來(lái)終止此循環(huán)。所以只要條件為真,循環(huán)就會(huì)退出。
#!/bin/bashwhile truedo if [條件];then exit fidone
Bash – C 風(fēng)格的 While 循環(huán)
您還可以在 bash 腳本中編寫(xiě)類(lèi)似于 while loop c 編程語(yǔ)言的 while 循環(huán)。
#!/bin/bashnum=1while((num <= 5))do echo $num let num++done
Bash – While 循環(huán)讀取文件內(nèi)容
這是while循環(huán)提供的一個(gè)有用的功能,可以逐行讀取文件內(nèi)容。使用它我們可以逐行讀取文件并執(zhí)行一些任務(wù)。
#!/bin/bashwhile read rowtextdo echo $rowtextdone < /var/log/anaconda/anaconda.log
執(zhí)行
要以root權(quán)限執(zhí)行