Linux Shell命令行及腳本編程實例詳解課件:第8章 Shell函數(shù)_第1頁
Linux Shell命令行及腳本編程實例詳解課件:第8章 Shell函數(shù)_第2頁
Linux Shell命令行及腳本編程實例詳解課件:第8章 Shell函數(shù)_第3頁
Linux Shell命令行及腳本編程實例詳解課件:第8章 Shell函數(shù)_第4頁
Linux Shell命令行及腳本編程實例詳解課件:第8章 Shell函數(shù)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章Shell函數(shù)8.1函數(shù)的定義當(dāng)你的腳本大到一定程度時,使用函數(shù)的優(yōu)點是顯而易見的,接下來就讓我們學(xué)習(xí)如何定義一個函數(shù)。定義函數(shù)的語法如下所示:#函數(shù)名function_name(){

#函數(shù)體,在函數(shù)中執(zhí)行的命令行commands… #參數(shù)返回,return語句是可選的。如果沒有return語句,則以函數(shù)最后一條命令的運行結(jié)果作為返回值;若果使用return語句,則return后跟數(shù)值n(數(shù)值范圍:0~255)[returnint;]

}8.1函數(shù)的定義或者,如果愿意,可在函數(shù)名前加上關(guān)鍵字function,這取決于讀者的偏好和習(xí)慣。functionfunction_name(){

commands…

}如果有function關(guān)鍵字,則可以省略圓括號“()”。函數(shù)體,也叫復(fù)合命令塊,是包含在{}之間的命令列表。也可以在一行內(nèi)定義一個函數(shù),此時,函數(shù)體內(nèi)的各命令之間必須用分號“;”隔開,其語法規(guī)則如下:functionname{command1;command2;commandN;}或者name(){command1;command2;commandN;}可以使用內(nèi)部命令unset的“-f”選項來取消函數(shù)的定義。8.2函數(shù)的參數(shù)、變量與返回值8.2.1實例:向函數(shù)傳遞參數(shù)Shell函數(shù)有自己的命令行參數(shù)。函數(shù)使用特殊變量$1,$2,..$n(本書5.4.3節(jié)所講述的Bash的位置參數(shù))來訪問傳遞給它的參數(shù)。函數(shù)中使用參數(shù)的語法規(guī)則如下:name(){

arg1=$1arg2=$2commandon$arg1

}使用如下語法來調(diào)用函數(shù):namefoobar在這里,name=函數(shù)名foo=參數(shù)1:傳遞給函數(shù)的第一個參數(shù)(位置參數(shù)$1)bar=參數(shù)2:傳遞給函數(shù)的第二個參數(shù)(位置參數(shù)$2)8.2.2本地變量默認(rèn)情況下腳本中所有變量都是全局的,在函數(shù)中修改一個變量將改變這個腳本中此變量的值,這在某些情況下這可能是個問題8.2.2本地變量我們可以使用local命令來創(chuàng)建一個本地變量,其語法如下所示:localvar=valuelocalvarName或者functionname(){

#定義一個本地變量varlocalvar=$1command1on$var

}local命令只能在函數(shù)內(nèi)部使用。local命令將變量名的可見范圍限制在函數(shù)內(nèi)部。8.2.3實例:使用return命令如果在函數(shù)里有Shell內(nèi)置命令return,則函數(shù)執(zhí)行到return語句結(jié)束,并且返回到Shell腳本中調(diào)用函數(shù)位置的下一個命令。如果return帶有一個數(shù)值型參數(shù),則這個參數(shù)就是函數(shù)的返回值,返回值的最大值是255;否則,函數(shù)的返回值是函數(shù)體內(nèi)最后一個執(zhí)行的命令的返回狀態(tài)。8.2.4實例:函數(shù)返回值測試可以直接在腳本調(diào)用函數(shù)語句的后面使用Shell特殊參數(shù)“?”來測試函數(shù)調(diào)用的返回值,通過特殊參數(shù)“?”可以得到最近一次執(zhí)行的前臺命令的退出狀態(tài)?;蛘咭部梢允褂胕f語句測試函數(shù)返回值。建議在if語句里用括號將函數(shù)調(diào)用括起來以增加可讀性。8.3函數(shù)的調(diào)用8.3.1實例:在Shell命令行調(diào)用函數(shù)在命令行中,可以通過直接輸入函數(shù)的名字,來調(diào)用或引用函數(shù):$function_name例如,定義一個叫做yday()的函數(shù)來顯示昨天的日期:$yday(){date--date='1dayago';}引用函數(shù)yday():$yday8.3.2實例:在腳本中調(diào)用函數(shù)要在腳本中調(diào)用函數(shù),首先要創(chuàng)建函數(shù),并確保它位于調(diào)用此函數(shù)的語句之前。要在腳本的開頭定義和編寫函數(shù)。同樣地,在腳本的開頭定義所有變量。8.3.3實例:從函數(shù)文件中調(diào)用函數(shù)你可以把你所有的函數(shù)存儲在一個函數(shù)文件中。你可以把所有的函數(shù)加載到你的當(dāng)前腳本或是命令行。加載函數(shù)文件中所有函數(shù)的語法如下:./path/to/your/functions.sh8.3.4實例:遞歸函數(shù)調(diào)用遞歸函數(shù)是重復(fù)調(diào)用其自身的函數(shù),并且沒有遞歸調(diào)用次數(shù)的限制。8.4實例:將函數(shù)放在后臺運行“&”操作符可以將命令放在后臺運行并釋放你的終端,你同樣可以把函數(shù)放在后臺運行。8.5小結(jié)通過本章的學(xué)習(xí),想

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論