第07章-Shell編程自考成人??票究普n件_第1頁
第07章-Shell編程自考成人??票究普n件_第2頁
第07章-Shell編程自考成人??票究普n件_第3頁
第07章-Shell編程自考成人專科本科課件_第4頁
第07章-Shell編程自考成人??票究普n件_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第7章 Shell編程Shell腳本介紹Shell腳本的基本語法Shell編程應(yīng)用Shell腳本介紹Shell腳本的基本語法點(diǎn)擊查看本小節(jié)知識架構(gòu)Shell編程應(yīng)用點(diǎn)擊查看本小節(jié)知識架構(gòu) 7.27.37.1了解掌握掌握掌握學(xué)習(xí)目標(biāo)了解Shell腳本1掌握變量42掌握Shell腳本的基本語法3掌握Shell腳本的編程應(yīng)用每一種計算機(jī)語言都有各自的特點(diǎn)與應(yīng)用環(huán)境。如面向過程的C語言、面向?qū)ο蟮腏AVA語言等。本章將重點(diǎn)介紹一種解釋性語言Shell腳本語言。Shell腳本與Windows下的批處理相似,其工作的本質(zhì)為:將各類Shell命令預(yù)先放入到一個文件中,然后批量執(zhí)行,滿足用戶的各種需求。本章將

2、主要介紹Shell腳本編程的基本語法,通過Shell編程完成實(shí)際的案例,從而提升讀者的Linux操作系統(tǒng)開發(fā)能力。7.1 Shell腳本介紹本書在2.2節(jié)中已經(jīng)介紹了Shell的基本概念,包括Shell、Shell命令、Shell腳本三者的區(qū)別。Shell是一種使用C語言編寫的命令行解釋器,被用來解析用戶命令,實(shí)現(xiàn)用戶與系統(tǒng)的交互。Shell命令則是用戶向系統(tǒng)內(nèi)核發(fā)送的的控制請求,這個控制請求是無法被內(nèi)核理解的,只是一個文本流,需要解釋器進(jìn)行解釋。而Shell腳本則是將命令、工具、編譯過的二進(jìn)制程序集合在一起的文件,同時可以內(nèi)建命令,提供了數(shù)組、循環(huán)、條件以及判斷等重要功能。開發(fā)者可以直接以S

3、hell的語法來寫程序,而不必使用類似C語言程序等傳統(tǒng)程序的編寫語法。7.1 Shell腳本介紹系統(tǒng)中的用戶如果需要重復(fù)執(zhí)行某一特定的任務(wù),可以選擇將任務(wù)的操作命令全部集合到Shell腳本文件中。每次執(zhí)行該腳本文件,即可將這些命令批量交由Shell進(jìn)行處理。Shell腳本本身不需要編譯,相對于管理系統(tǒng)任務(wù)和其他重復(fù)工作的例程來說,具有明顯的優(yōu)勢。通常情況下,開發(fā)者習(xí)慣用“Shell”代指Shell腳本,但讀者需要明白,Shell與Shell腳本是兩個不同的概念。7.2 Shell腳本的基本語法7.2.1腳本的開頭返回目錄7.2.2腳本的執(zhí)行7.2.3變量7.2.4語句7.2 Shell腳本的基

4、本語法7.2.5函數(shù)返回目錄7.2.6腳本調(diào)用7.2 Shell腳本的基本語法Shell腳本在Linux操作系統(tǒng)中扮演著很重要的角色。在啟動Linux文件系統(tǒng)時,通過Shell腳本可以完成各種配置和服務(wù)的搭建,理解這些啟動腳本將有助于讀者分析系統(tǒng)的行為。學(xué)習(xí)Shell腳本也可以幫助讀者對Linux內(nèi)核中的Makefile有更加深入的了解,從而提升讀者分析Linux內(nèi)核代碼結(jié)構(gòu)的能力。7.2.1 腳本的開頭新建Shell腳本文件,其文件擴(kuò)展名為sh(sh代表Shell),擴(kuò)展名本身并不影響腳本執(zhí)行,如例所示。7.2 Shell腳本的基本語法按照例所示的方式創(chuàng)建腳本文件后,使用Vim編輯器編輯Sh

5、ell腳本。Shell腳本的第1行是固定的,類似于C語言程序?qū)㈩^文件聲明作為開頭,如例所示。7.2.1 腳本的開頭例中,符號“#!”為約定的標(biāo)記,用來通知系統(tǒng)該腳本文件需要使用哪種類型的解釋器來執(zhí)行,即使用哪一種Shell。bash(Bourne Again Shell)是Linux默認(rèn)的Shell程序,是Bourne Shell 的增強(qiáng)版。讀者也可以使用Bourne Shell(即sh),修改文件開頭的標(biāo)識即可,如例所示。7.2 Shell腳本的基本語法7.2.1 腳本的開頭保存以上腳本文件,然后修改文件的用戶訪問權(quán)限,如例所示。7.2 Shell腳本的基本語法修改腳本文件的權(quán)限使用命令ch

6、mod。如例所示,增加腳本文件test.sh的可執(zhí)行權(quán)限。Shell腳本文件必須賦予執(zhí)行權(quán)限,否則無法執(zhí)行。7.2.2 腳本的執(zhí)行Shell腳本文件無須編譯,只需要由解釋器解析。因此,修改權(quán)限后的腳本文件可直接執(zhí)行。執(zhí)行Shell腳本有以下3種方式。1.作為可執(zhí)行程序執(zhí)行例所示的腳本文件test.sh,如例所示。7.2 Shell腳本的基本語法例將腳本文件視為二進(jìn)制的可執(zhí)行程序,執(zhí)行的方式為“./xxx.sh”。執(zhí)行腳本時,Linux操作系統(tǒng)會根據(jù)全局環(huán)境變量PATH所指定的路徑尋找該腳本,而PATH在未修改的情況下,一定不會指定當(dāng)前腳本文件所在的路徑。因此,使用“./”表示通知系統(tǒng)在當(dāng)前目錄

7、下尋找。7.2.2 腳本的執(zhí)行2.指定環(huán)境變量如果用戶希望在系統(tǒng)的任何工作目錄下都可以執(zhí)行某一特定目錄中的Shell腳本文件,只需將Shell腳本所在的目錄添加到環(huán)境變量PATH中。將例展示的腳本文件所在的路徑添加到整個環(huán)境變量中,如例所示。7.2 Shell腳本的基本語法7.2.2 腳本的執(zhí)行例中,腳本文件test.sh所在的路徑為“/home/linux/1000phone”。因此,使用export命令臨時在PATH變量中添加該路徑。完成路徑添加后,即可在任意目錄下直接輸入文件名執(zhí)行腳本文件,無須再指定路徑。3.作為解釋器參數(shù)除了上述的執(zhí)行方式外,用戶還可以選擇直接運(yùn)行解釋器,其參數(shù)為腳本

8、文件名,如例所示。7.2 Shell腳本的基本語法按照例所示的方式執(zhí)行腳本文件,其第1行無須指定解釋器信息。如果需要使用的Shell為bash,則將例中的sh替換為bash即可。7.2.3 變量在Shell編程中,所有的變量都由字符串組成。不同于C語言程序中的變量,Shell腳本中的變量無須聲明且沒有數(shù)據(jù)類型。Bourne Shell中有4種變量,分別為用戶自定義變量、命令行參數(shù)、預(yù)定義變量、環(huán)境變量。1.用戶自定義變量Shell腳本中的變量不支持?jǐn)?shù)據(jù)類型(整型、字符型等),任何賦值給變量的值都被Shell解釋為一串字符。變量的命名需要遵循以下規(guī)則。7.2 Shell腳本的基本語法7.2.3

9、變量(1)只能使用字符、數(shù)字和下劃線,首字符不能是數(shù)字。(2)不能出現(xiàn)空格,可以使用下畫線。(3)不能使用Shell中已經(jīng)定義的關(guān)鍵字。(4)通常使用全大寫,便于識別。變量賦值的格式如下所示。7.2 Shell腳本的基本語法上述賦值格式中,需要注意的是,變量賦值時,等號兩邊不能出現(xiàn)空格。7.2.3 變量在Shell腳本中使用變量時,需要在變量前面加“$”符,表示引用,如例所示。7.2 Shell腳本的基本語法Shell腳本中變量的賦值,遵循從右向左的順序,如例所示。7.2.3 變量例的運(yùn)行結(jié)果如下所示,變量Y的值為a,驗(yàn)證了賦值的順序?yàn)閺挠蚁蜃蟆?.2 Shell腳本的基本語法Shell編程時

10、,需要特別注意變量與其他字符混淆的問題,如例所示的代碼。7.2.3 變量 例的運(yùn)行結(jié)果如下。7.2 Shell腳本的基本語法例中并沒有按照程序編寫思維輸出預(yù)想的字符串“1nd”。Shell在執(zhí)行時會搜索變量NUMnd,然而腳本文件中的NUMnd是沒有任何賦值的。因此,需要使用大括號來通知Shell打印的變量是NUM,如例所示。7.2.3 變量 例使用大括號選中需要輸出的變量,輸出結(jié)果如下。7.2 Shell腳本的基本語法 2.命令行參數(shù)Shell編程中的命令行參數(shù)(位置參數(shù))與C程序中的main函數(shù)傳參類似。這些位置參數(shù)使用$N表示,N為正整數(shù),表示命令行傳入的第N個參數(shù)。N從0開始進(jìn)行標(biāo)記,

11、與C語言中的數(shù)組表示的方式相同。例如,$1表示傳遞給腳本程序的第1個參數(shù),并依此類推。$0表示程序本身的名字。7.2.3 變量 命令行參數(shù)的使用如例所示。7.2 Shell腳本的基本語法輸出結(jié)果如下所示,執(zhí)行腳本時傳入命令行第1個參數(shù)10,則$1被賦值為10,再賦值給變量VAR,可見輸出VAR的值為10。7.2.3 變量 3.預(yù)定義變量預(yù)定義變量即Shell已經(jīng)定義的變量,用戶可根據(jù)Shell的定義直接使用這些變量,無須自己定義。所有預(yù)定義的變量都由“$”和其他符號組成,常用的預(yù)定義變量如下所示。(1)$#:表示命令行參數(shù)的個數(shù)。(2)$:包含所有的命令行參數(shù),即“$1、$2、$3.”。(3)

12、$?:前一個命令的退出狀態(tài),正常退出返回0,反之為非0值。(4)$*:包含所有的命令行參數(shù),即“$1、$2、$3.”。(5)$:正在執(zhí)行的進(jìn)程的ID號。7.2 Shell腳本的基本語法7.2.3 變量預(yù)定義變量的使用如例所示。7.2 Shell腳本的基本語法輸出結(jié)果如下所示,在命令行輸入?yún)?shù)。由輸出結(jié)果可知,$0為“./test.sh”,$#為命令參數(shù)的個數(shù),共有5個參數(shù),$*表示命令行所有的參數(shù)。7.2.3 變量4.環(huán)境變量環(huán)境變量是操作系統(tǒng)中具有特定名字的對象,Linux操作系統(tǒng)中的每一個用戶都可以通過修改環(huán)境變量對自己的運(yùn)行環(huán)境進(jìn)行配置。Linux操作系統(tǒng)中常用的環(huán)境變量如表所示,這些環(huán)

13、境變量無須用戶定義,并且都有其各自的含義。7.2 Shell腳本的基本語法7.2.3 變量表中的環(huán)境變量可以在命令行或Shell腳本中直接使用,設(shè)置或使用環(huán)境變量的方式如表所示。7.2 Shell腳本的基本語法7.2.3 變量根據(jù)表所示的環(huán)境變量以及使用方式,進(jìn)行簡單的測試,如例所示。7.2 Shell腳本的基本語法7.2.3 變量環(huán)境變量按照生命周期的不同可以分為永久性環(huán)境變量和臨時性環(huán)境變量。根據(jù)用戶等級的不同可以分為系統(tǒng)級環(huán)境變量和用戶級環(huán)境變量。(1)臨時環(huán)境變量臨時環(huán)境變量只對當(dāng)前的Shell有效,如果用戶退出登錄或終端關(guān)閉,則環(huán)境變量失效。如例所示。7.2 Shell腳本的基本語法

14、7.2.3 變量例中,使用命令export導(dǎo)出新的自定義的變量VAR并賦值,使用echo輸出變量VAR的值。變量VAR只在當(dāng)前Shell中有效,如果關(guān)閉該終端或退出用戶linux,則VAR將失效。重啟終端,再次輸出變量VAR的值,如下所示。7.2 Shell腳本的基本語法輸出為空,說明變量VAR已經(jīng)失效。7.2.3 變量(2)永久性環(huán)境變量(系統(tǒng)級)系統(tǒng)級的永久性環(huán)境變量對系統(tǒng)內(nèi)所有的用戶生效,其作用范圍為整個系統(tǒng)。用戶在系統(tǒng)配置文件“/etc/profile”中添加需要的環(huán)境變量后,使用source命令刷新配置,即可使該變量生效。使用root用戶打開配置文件,在文件的末尾添加變量,如例所示。

15、7.2 Shell腳本的基本語法7.2.3 變量完成配置后,保存并退出文件。使用命令source刷新配置,如例所示。7.2 Shell腳本的基本語法例中,執(zhí)行source命令前,需確認(rèn)當(dāng)前的用戶為root用戶。切換為其他用戶,測試變量是否定義成功,如例所示。7.2.3 變量例中,用戶linux輸出變量COMPANY的值,輸出成功,說明該變量可以被其他用戶使用。(3)永久性環(huán)境變量(用戶級)用戶級的永久性環(huán)境變量只對當(dāng)前用戶有效。某一個用戶設(shè)置此類環(huán)境變量后,該變量對于其他用戶來說是不存在的。設(shè)置此類環(huán)境變量需要配置用戶主目錄下的隱藏文件“.bashrc”。設(shè)置的方法與上一步部分中設(shè)置系統(tǒng)級變量

16、時一致。7.2 Shell腳本的基本語法7.2.3 變量根據(jù)例中的輸出結(jié)果可知,變量COMPANY被其他用戶(本例中為root用戶)使用時沒有任何效果。7.2 Shell腳本的基本語法如例所示,打開linux用戶主目錄下的配置文件,將例中的第32行代碼添加到該文件的末尾處,保存并退出文件。使用source命令使配置文件生效。切換用戶測試設(shè)置是否成功,如例所示。7.2.4 語句7.2 Shell腳本的基本語法Shell語句在一個完整的Shell程序中有著十分重要的作用。使用Shell語句不僅可以實(shí)現(xiàn)功能性的設(shè)計,而且可以連接控制命令。Shell語句可以分為3類:說明性語句、功能性語句、結(jié)構(gòu)性語句

17、。1.說明性語句說明性語句指的是注釋行。注釋行可以出現(xiàn)在Shell程序的任何位置,既可以單獨(dú)一行,也可以出現(xiàn)在執(zhí)行語句的后面。Shell程序中使用符號#注釋語句,表示該語句不被解釋執(zhí)行。7.2.4 語句7.2 Shell腳本的基本語法例所示的第1行代碼即為注釋語句。2.功能性語句在Shell程序中,變量除了可以直接被賦值以外,還可以從程序外部獲取值。外部獲取變量的值使用鍵盤輸入即可。(1)鍵盤讀取變量值在Shell中可以使用命令read讀取鍵盤輸入的值,其格式如下。7.2.4 語句7.2 Shell腳本的基本語法使用上述格式時,從鍵盤輸入的值將作為字符串讀入“變量”中,如例所示。例的輸出結(jié)果如

18、下所示,其中第3行為用戶終端輸入的內(nèi)容,非程序輸出。7.2.4 語句7.2 Shell腳本的基本語法用戶在終端輸入“1000phone”后,該字符串被讀入變量COMPANY。輸出變量COMPANY中的值,與輸入時一致,說明read讀取鍵盤輸入成功。例是一個Shell程序,實(shí)現(xiàn)查看任意目錄下的文件信息。代碼實(shí)現(xiàn)的方式為:read命令讀取鍵盤輸入的目錄名并保存到自定義的變量中,然后通過ls命令引用該變量。7.2.4 語句7.2 Shell腳本的基本語法例的輸出結(jié)果如下所示,其中第3行為用戶終端輸入的內(nèi)容,非程序輸出。根據(jù)上述結(jié)果可知,鍵盤輸入的字符串“/home/linux”被命令read讀入變量

19、DIRECTORY。通過命令ls引用變量DIRECTORY,即可查看目錄“/home/linux”下的所有文件信息。7.2.4 語句7.2 Shell腳本的基本語法(2)算術(shù)運(yùn)算在Shell中,算術(shù)運(yùn)算指令expr可用于實(shí)現(xiàn)簡單的算術(shù)運(yùn)算。如加(+)、減(-)、乘(*)、除(/)、取余(%)等操作。其表達(dá)式格式如下所示,注意符號“”為反引號,物理鍵位于鍵盤中Esc鍵下方。注意:在Shell程序中,算術(shù)運(yùn)算符在使用時必須搭配expr指令,單獨(dú)使用沒有任何效果。如例所示,命令expr與算術(shù)運(yùn)算符一起使用,實(shí)現(xiàn)數(shù)值的運(yùn)算。7.2.4 語句7.2 Shell腳本的基本語法7.2.4 語句7.2 She

20、ll腳本的基本語法例通過命令read讀取鍵盤輸入的值并保存到變量VAR1、VAR2中;通過expr命令使用算術(shù)運(yùn)算符實(shí)現(xiàn)加、減、乘、除、取余,并輸出運(yùn)算后的值。需要特別注意的是,expr命令在配合算術(shù)運(yùn)算符使用時,運(yùn)算符兩邊必須有空格。例運(yùn)行結(jié)果如下所示,其中第3行和第4行為用戶輸入設(shè)置,非程序輸出。7.2.4 語句7.2 Shell腳本的基本語法expr命令除了可以實(shí)現(xiàn)上述功能以外,還可以實(shí)現(xiàn)數(shù)值或字符串比較、字符串匹配、字符串提取、字符串長度計算、判斷變量或參數(shù)等功能。(3)test命令Shell中的test命令用來測試某個條件是否成立,其測試的對象主要為字符串、整數(shù)、文件屬性。每種測試對

21、象都有一套具體的測試操作符,Shell程序通過這些測試操作符,來完成具體的測試需求。7.2.4 語句7.2 Shell腳本的基本語法字符串測試操作符如表所示。使用表所示的測試操作符,即可完成字符串的簡單測試。如例所示,從鍵盤輸入兩個字符串,測試并輸出結(jié)果。7.2.4 語句7.2 Shell腳本的基本語法例中代碼功能為判斷兩個字符串是否相等。其中第6行代碼用來判斷變量中保存的字符串是否相等,需要注意的是,“”后和“”前以及“=”兩端都有空格,且不可省略。第6行代碼也可以用如下語句替換,二者的功能一致。預(yù)定義變量$?用來返回上一條命令的退出狀態(tài),正常退出為0,其它情況為1。7.2.4 語句7.2

22、Shell腳本的基本語法例的測試結(jié)果如下所示,其中第2行和第3行為用戶輸入內(nèi)容,非程序輸出結(jié)果。如上所示,當(dāng)輸入兩個不同字符串時,程序返回狀態(tài)值1,表示兩個字符串不相等。讀者也可以使用同樣的方式,練習(xí)使用表中的其它測試操作符。7.2.4 語句7.2 Shell腳本的基本語法整數(shù)測試操作符如表所示。7.2.4 語句7.2 Shell腳本的基本語法使用表中的測試操作符即可實(shí)現(xiàn)整數(shù)的測試。如例所示,判斷兩個整數(shù)是否相等。例的輸出結(jié)果如下所示,其中第2行和第3行為用戶終端輸入的內(nèi)容,非程序輸出。7.2.4 語句7.2 Shell腳本的基本語法由上述輸出結(jié)果可知,當(dāng)輸入不相等的兩個整數(shù)時,程序判定條件為

23、假,輸出狀態(tài)值為1。表中的其他測試符也可以借鑒例所示的代碼進(jìn)行測試。文件測試操作符如表所示。7.2.4 語句7.2 Shell腳本的基本語法使用表中的測試操作符即可完成對文件的基本測試。如例所示,測試文件是否為目錄。例的輸出結(jié)果如下所示, 其中第3行為用戶輸入內(nèi)容,非程序輸出。7.2.4 語句7.2 Shell腳本的基本語法由上述輸出結(jié)果可知,程序檢測到文件test為目錄,判定條件為真,輸出狀態(tài)值為0。表中的其他測試操作符也可以借鑒例所示的代碼進(jìn)行測試。3.結(jié)構(gòu)性語句Shell腳本語言中的結(jié)構(gòu)性語句與其他語言類似,主要包括:條件判斷語句、多路分支語句、循環(huán)語句、循環(huán)控制語句等。(1)條件判斷語

24、句條件判斷語句的語法格式如下所示。7.2.4 語句7.2 Shell腳本的基本語法如果表達(dá)式為真,則執(zhí)行命令表中的命令,否則退出if語句。上述語法格式中,if與fi必須成對使用,表示條件語句的語句括號;命令表中的命令可以是一條,也可以是若干條。條件判斷語句的使用如例所示,其功能為判斷文件是否為目錄。如果判斷為真,則查看目錄中的文件信息。7.2.4 語句7.2 Shell腳本的基本語法例中第4行代碼的功能也可以通過test命令實(shí)現(xiàn),如下所示。例的輸出結(jié)果如下所示,其中前4行為用戶輸入內(nèi)容,非程序輸出。7.2.4 語句7.2 Shell腳本的基本語法在C語言編程中,if通常與else配對使用,這種

25、使用方式在Shell中也同樣適用。具體的語法格式如下。如果表達(dá)式為真,則執(zhí)行命令表1中的命令,否則執(zhí)行命令表2 中的命令。使用上述語法格式對例所示的代碼進(jìn)行補(bǔ)充。如例所示,如果判斷文件是目錄,則查看目錄下所有的文件(隱藏文件除外);如果判斷文件為普通文件,則查看文件中的內(nèi)容。7.2.4 語句7.2 Shell腳本的基本語法例中第711行代碼,可以簡化為如下代碼,其功能一致。7.2.4 語句7.2 Shell腳本的基本語法例的輸出結(jié)果如下所示,其中第1行第3行和4行為用戶輸入內(nèi)容,非程序輸出。文件test.txt為提前創(chuàng)建的文件,用于測試腳本程序是否正確。上述輸出結(jié)果中,可見程序檢測到終端輸入的

26、文件為普通文件后,輸出文件中的內(nèi)容。7.2.4 語句7.2 Shell腳本的基本語法(2)多路分支語句多路分支語句即多重條件測試,類似于C語言程序中的switch-case語句。其語法格式如下。7.2.4 語句7.2 Shell腳本的基本語法上述語法格式的具體使用如例所示。7.2.4 語句7.2 Shell腳本的基本語法例中,代碼的功能為引導(dǎo)用戶輸入,僅起提示作用。根據(jù)用戶輸入的請求,執(zhí)行不同的提示,程序輸出結(jié)果如下所示。由上述輸出結(jié)果可見,運(yùn)行腳本程序時,輸入不同的請求,則程序輸出不同的提示。7.2.4 語句7.2 Shell腳本的基本語法(3)for循環(huán)語句for循環(huán)語句一般用于循環(huán)次數(shù)確

27、定的情況下,多次執(zhí)行一條命令或一組命令。其格式如下所示。上述語法格式的使用如例所示,計算1100的和。7.2.4 語句7.2 Shell腳本的基本語法例中,seq命令用于生成一個數(shù)到另一個數(shù)之間的所有整數(shù)。輸出結(jié)果如下所示。(4)while循環(huán)語句while循環(huán)語句與C語言中的while循環(huán)語句類似,其語法格式如下。7.2.4 語句7.2 Shell腳本的基本語法上述while循環(huán)語句格式中,如果命令或表達(dá)式條件為真,則執(zhí)行一次命令表中的命令。執(zhí)行命令表完畢后,再次判斷命令或表達(dá)式是否為真,為真則繼續(xù)執(zhí)行命令表,如此循環(huán),直到命令或表達(dá)式判斷為假時退出循環(huán)。while循環(huán)的具體使用如例所示,其

28、功能與例相同,計算1100的和。7.2.4 語句7.2 Shell腳本的基本語法例的運(yùn)行結(jié)果如下所示。(5)循環(huán)控制語句循環(huán)控制語句包括break語句與continue語句。break語句表示跳出整個循環(huán),而continue語句只是跳出本輪循環(huán),進(jìn)入下一輪循環(huán)。7.2.4 語句7.2 Shell腳本的基本語法continue語句的使用如例所示。例所示代碼的功能為:通過for循環(huán)依次輸出16所有的整數(shù)。其中第58行代碼為判斷條件,即變量等于3時,使用continue語句跳過輸出變量值的操作。7.2.4 語句7.2 Shell腳本的基本語法其輸出結(jié)果如下所示。由上述運(yùn)行結(jié)果可知,程序跳過了變量等于

29、3的一輪循環(huán)。將例中的continue替換為break,其輸出結(jié)果如下所示,可見當(dāng)變量等于3時,break執(zhí)行跳出整個循環(huán)。7.2.5 函數(shù)7.2 Shell腳本的基本語法在實(shí)際的程序編程中,開發(fā)者通常將具有固定功能且多次使用的一組命令(語句)封裝在一個函數(shù)中,當(dāng)需要使用該功能時只需調(diào)用該函數(shù)即可。在Shell中同樣可以使用函數(shù),需要注意的是,函數(shù)在調(diào)用前必須先定義。調(diào)用程序可以傳遞參數(shù)給函數(shù),函數(shù)可用return語句將運(yùn)行后的結(jié)果返回給調(diào)用程序。1.函數(shù)的定義函數(shù)定義的方式如下所示,與C語言程序中的函數(shù)類似。7.2.5 函數(shù)7.2 Shell腳本的基本語法函數(shù)也可以定義為如下格式。2.函數(shù)調(diào)

30、用格式函數(shù)調(diào)用的格式如下所示,函數(shù)的所有的標(biāo)準(zhǔn)輸出都傳遞給了主程序的變量。7.2.5 函數(shù)7.2 Shell腳本的基本語法除上述格式所示的調(diào)用方式外,函數(shù)也可以被直接調(diào)用,其格式如下。3.函數(shù)使用編寫一個示例,其功能為:求兩個數(shù)的和(這兩個數(shù)使用位置參數(shù)傳參),并輸出結(jié)果。7.2.5 函數(shù)7.2 Shell腳本的基本語法如例所示,將求和功能封裝為一個函數(shù)。例的執(zhí)行結(jié)果如下。7.2.6 腳本調(diào)用7.2 Shell腳本的基本語法在Shell腳本程序中,可以調(diào)用另一個Shell腳本。如例所示,在test1.sh中調(diào)用test2.sh。test2.sh腳本的代碼如例所示。7.2.6 腳本調(diào)用7.2 Shell腳本的基本語法運(yùn)行例所示的腳本程序test1.sh,其結(jié)果如下。根據(jù)輸出結(jié)果可知,test1.sh成功調(diào)用test2.sh腳本程序。7.3 Shell編程應(yīng)用7.3.1猜數(shù)字游戲返回目錄7.3.2石頭、剪刀、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論