




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
模塊3Shell基礎(chǔ)編程Shell循環(huán)結(jié)構(gòu)3.4Shell腳本中的循環(huán)在LinuxShell的編程過(guò)程中,有時(shí)需要反復(fù)執(zhí)行某一個(gè)命令或某一組命令,這時(shí)要用到循環(huán)語(yǔ)句。循環(huán)語(yǔ)句用于特定條件下決定某些語(yǔ)句重復(fù)執(zhí)行的控制方式,它具有封閉型的單入單出性質(zhì),如果未達(dá)到結(jié)束狀態(tài),將一直執(zhí)行循環(huán)體內(nèi)的操作。Shell中常用的循環(huán)語(yǔ)句有while循環(huán)語(yǔ)句和for循環(huán)語(yǔ)句等。3.4.1while循環(huán)while循環(huán)的重復(fù)執(zhí)行次數(shù)是利用一個(gè)條件來(lái)控制的,它的語(yǔ)法結(jié)構(gòu)如下。while條件測(cè)試表達(dá)式do操作語(yǔ)句(可以多條)donewhile循環(huán)語(yǔ)句執(zhí)行的過(guò)程是:先判斷條件測(cè)試表達(dá)式的結(jié)果,如果為真則執(zhí)行循環(huán)體,并且執(zhí)行完循環(huán)體后進(jìn)行下一次循環(huán),否則退出循環(huán)執(zhí)行done后的命令。3.4.1while循環(huán)【例3-8】編寫(xiě)Shell腳本,讓用戶(hù)從鍵盤(pán)輸入1~10的整數(shù)來(lái)進(jìn)行猜數(shù)游戲。3.4.1while循環(huán)【例3-9】編寫(xiě)Shell腳本,讓用戶(hù)從鍵盤(pán)輸入一個(gè)整數(shù)n,求1+2+…+n的和。3.4.2for循環(huán)for循環(huán)是LinuxShell中最常用的結(jié)構(gòu)。for循環(huán)常用的有兩種結(jié)構(gòu):第一種結(jié)構(gòu)是列表for循環(huán),第二種結(jié)構(gòu)是類(lèi)C語(yǔ)言風(fēng)格的for循環(huán)。1.列表for循環(huán)列表for循環(huán)語(yǔ)句用于將一組命令執(zhí)行已知的次數(shù),它的語(yǔ)法結(jié)構(gòu)如下。for變量in{list}do操作語(yǔ)句(可以多條)done此for循環(huán)執(zhí)行次數(shù)和list列表中常數(shù)或字符串的個(gè)數(shù)相同,先將in后list列表的第一個(gè)常數(shù)或字符串賦值給變量,然后執(zhí)行循環(huán)體;接著將list列表第二個(gè)賦值給變量,再次執(zhí)行循環(huán)體。這個(gè)過(guò)程持續(xù)到list列表執(zhí)行完畢,然后執(zhí)行done后的操作命令。43.4.2for循環(huán)[root@localhost~]#vimfor1.sh[root@localhost~]#catfor1.sh#!/bin/bashforiin12345doecho"welcome,$itimes"done[root@localhost~]#shfor1.shwelcome,1timeswelcome,2timeswelcome,3timeswelcome,4timeswelcome,5times【例3-10】編寫(xiě)Shell腳本顯示5次歡迎操作。3.4.2for循環(huán)[root@localhost~]#vimfor2.sh[root@localhost~]#catfor2.sh#!/bin/bashforiin{1..5..2}doecho"Thenumberis$i"done[root@localhost~]#shfor2.shThenumberis1Thenumberis3Thenumberis5【例3-11】編寫(xiě)Shell腳本顯示出5以?xún)?nèi)的奇數(shù)。3.4.2for循環(huán)上例中通過(guò){1..5..2}實(shí)現(xiàn)1~5內(nèi)的奇數(shù)按步數(shù)2進(jìn)行跳躍。同樣可以通過(guò)seq命令實(shí)現(xiàn)按2遞增來(lái)輸出1~5內(nèi)的所有奇數(shù),只需將上例中的for循環(huán)那一行更改為以下內(nèi)容即可。foriin`seq125`注意的是反引號(hào)(``)3.4.2for循環(huán)[root@localhost~]#vimfor3.sh[root@localhost~]#catfor3.sh#!/bin/bashforiin`ls*.sh`//注意反引號(hào)(``)和通配符(*)doecho-en"$i\t"http://解析“\t”和不換行done[root@localhost~]#shfor3.shcase1.shcase2.sh……省略部分信息……while2.sh【例3-12】編寫(xiě)Shell腳本輸出當(dāng)前目錄所有以“.sh”結(jié)尾的文件。3.4.2for循環(huán)2.類(lèi)C語(yǔ)言風(fēng)格的for循環(huán)類(lèi)C語(yǔ)言風(fēng)格的for循環(huán)一般用于循環(huán)次數(shù)已知的情況,它的語(yǔ)法結(jié)構(gòu)如下。for((表達(dá)式1;表達(dá)式2;表達(dá)式3))do操作語(yǔ)句(可以多條)done其中,表達(dá)式1為循環(huán)變量賦初值的語(yǔ)句;表達(dá)式2為判斷條件測(cè)試表達(dá)式的結(jié)果,如果為真則執(zhí)行循環(huán)體,并且執(zhí)行完循環(huán)體后進(jìn)行下一次循環(huán),否則退出循環(huán)執(zhí)行done后的命令;表達(dá)式3用于改變循環(huán)變量的語(yǔ)句。3.4.2for循環(huán)[root@localhost~]#vimfor4.sh[root@localhost~]#catfor4.sh#!/bin/bashread-p"Pleaseinputthenumber:"inNumfor((sum=0,i=1;i<=$inNum;i+=2))dosum=$[sum+i]doneecho"Thesumis$sum"[root@localhost~]#shfor4.shPleaseinputthenumber:3Thesumis4[root@localhost~]#shfor4.shPleaseinputthenumber:100Thesumis2500【例3-13】編寫(xiě)Shell腳本,讓用戶(hù)從鍵盤(pán)輸入一個(gè)整數(shù)n,求1~n的奇數(shù)和。3.4.3嵌套循環(huán)一個(gè)循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱(chēng)為循環(huán)嵌套。在外部循環(huán)的每次執(zhí)行過(guò)程中都會(huì)觸發(fā)內(nèi)部循環(huán),直至內(nèi)部完成一次循環(huán),才接著執(zhí)行下一次外部循環(huán)。for循環(huán)和while循環(huán)可以相互嵌套。3.4.3嵌套循環(huán)【例3-14】編寫(xiě)Shell腳本,利用for循環(huán)完成下圖所示的九九乘法表。3.4.3嵌套循環(huán)【例3-15】編寫(xiě)Shell腳本,利用for循環(huán)嵌套實(shí)現(xiàn)一個(gè)8×8格的棋盤(pán)。為了完成此例,需要先了解Shell腳本中echo顯示內(nèi)容帶顏色顯示的方法及格式,其中“F”為字體顏色,編號(hào)為30~37;“B”為背景顏色,編號(hào)為40~47。echo顯示帶顏色需要使用參數(shù)“-e”,格式為:echo-e"\033[B;Fm字符串\033[0m"或者echo-e"\033[F;Bm字符串\033[0m"3.4.3嵌套循環(huán)其中,B和F有其一亦可,具體的范圍及顏色見(jiàn)表3-5。表3-5常用的字體及背景編號(hào)對(duì)應(yīng)顏色3.4.3
嵌套循環(huán)[root@localhost~]#vimfor6.sh[root@localhost~]#catfor6.sh#!/bin/bashfor((i=1;i<=8;i++))dofor((j=1;j<=8;j++))dototal=$[$i+$j]tmp=$[$total%2]if[[$tmp-eq0]];thenecho-en"\033[44m\033[0m"elseecho-en"\033[41m\033[0m"fidoneecho""http://換行done[root@localhost~]#shfor6.sh下面進(jìn)行【例6-15】的Shell腳本編寫(xiě)。3.4.3
嵌套循環(huán)上例使用了類(lèi)C語(yǔ)言風(fēng)格的for嵌套循環(huán)實(shí)現(xiàn)了8×8的棋盤(pán):-通過(guò)i和j之和取模來(lái)使棋盤(pán)黑白相間,其中,“\033[47m”表示白色,“\033[40m”表示黑色,其后的空格表示每個(gè)棋格的長(zhǎng)寬,“\033[0m”表示關(guān)閉所有屬性.-同時(shí)可以通過(guò)“\033[5m”來(lái)達(dá)到閃爍的效果。3.4.4
循環(huán)控制符在LinuxShell編程中,有時(shí)需要立即從循環(huán)中退出:-可以使用break循環(huán)控制符退出循環(huán);-使用continue循環(huán)控制符僅退出本次循環(huán)而執(zhí)行后續(xù)的循環(huán)。3.4.4
循環(huán)控制符1.break循環(huán)控制符break語(yǔ)句可以應(yīng)用在for和while循環(huán)語(yǔ)句中,用戶(hù)強(qiáng)行退出循環(huán),下面通過(guò)修改【例3-14】來(lái)說(shuō)明break循環(huán)控制符的作用。3.4.4循環(huán)控制符從上面的腳本可以看出,雖然for循環(huán)設(shè)計(jì)為輸出九九乘法表,但是由于$i大于3時(shí)使用break循環(huán)控制符終止了for循環(huán)語(yǔ)句,因此輸出只到3。需要注意的是,如果有多個(gè)循環(huán)需跳出,則要在相應(yīng)的位置加上break語(yǔ)句,因?yàn)閎reak語(yǔ)句僅能退出當(dāng)前所處的循環(huán)。3.4.4循環(huán)控制符2.continue循環(huán)控制符continue循環(huán)控制符也是應(yīng)用在for和while
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度國(guó)際期貨市場(chǎng)參與合作協(xié)議書(shū)
- 2025年度智能能源管理系統(tǒng)合作運(yùn)營(yíng)合同范本
- 二零二五年度生態(tài)鄉(xiāng)村保潔員聘用與績(jī)效評(píng)價(jià)協(xié)議
- 藥店員工二零二五年度勞動(dòng)合同與藥品庫(kù)存優(yōu)化方案
- 二零二五年度合伙人投資協(xié)議書(shū)-大數(shù)據(jù)中心建設(shè)項(xiàng)目合作
- 二零二五年度城市更新改造方借款協(xié)議書(shū)
- 2025年度知識(shí)產(chǎn)權(quán)運(yùn)營(yíng)聘用合同
- 二零二五年度企業(yè)新員工個(gè)人信息及商業(yè)秘密保護(hù)合同
- 二零二五年度高空作業(yè)安全責(zé)任協(xié)議書(shū)(高空管道清潔服務(wù)合同)
- 2025年度生態(tài)旅游果園土地承包經(jīng)營(yíng)協(xié)議
- 酒店預(yù)訂確認(rèn)單
- +消除誤解 心理健康課件
- 會(huì)計(jì)人才培養(yǎng)方案調(diào)研報(bào)告書(shū)
- 企業(yè)標(biāo)準(zhǔn)自我聲明公開(kāi)
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)(微課版第3版)課件 第1、2章 了解創(chuàng)業(yè)規(guī)劃你的職業(yè)生涯、創(chuàng)新與創(chuàng)新思維
- E時(shí)代大學(xué)英語(yǔ)-讀寫(xiě)教程2 第四單元
- 四年級(jí)語(yǔ)文上冊(cè)第一單元單元整體教學(xué)設(shè)計(jì)
- 玩具安全標(biāo)準(zhǔn)測(cè)試培訓(xùn)-(SGS)課件
- 員工工資條模板
- 高考英語(yǔ)備考-英語(yǔ)單詞構(gòu)詞法詞根和詞綴課件
- 病例報(bào)告表格模板CRF
評(píng)論
0/150
提交評(píng)論