版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章Shell函數(shù)8.1函數(shù)的定義當(dāng)你的腳本大到一定程度時(shí),使用函數(shù)的優(yōu)點(diǎn)是顯而易見(jiàn)的,接下來(lái)就讓我們學(xué)習(xí)如何定義一個(gè)函數(shù)。定義函數(shù)的語(yǔ)法如下所示:#函數(shù)名function_name(){
#函數(shù)體,在函數(shù)中執(zhí)行的命令行commands… #參數(shù)返回,return語(yǔ)句是可選的。如果沒(méi)有return語(yǔ)句,則以函數(shù)最后一條命令的運(yùn)行結(jié)果作為返回值;若果使用return語(yǔ)句,則return后跟數(shù)值n(數(shù)值范圍:0~255)[returnint;]
}8.1函數(shù)的定義或者,如果愿意,可在函數(shù)名前加上關(guān)鍵字function,這取決于讀者的偏好和習(xí)慣。functionfunction_name(){
commands…
}如果有function關(guān)鍵字,則可以省略圓括號(hào)“()”。函數(shù)體,也叫復(fù)合命令塊,是包含在{}之間的命令列表。也可以在一行內(nèi)定義一個(gè)函數(shù),此時(shí),函數(shù)體內(nèi)的各命令之間必須用分號(hào)“;”隔開(kāi),其語(yǔ)法規(guī)則如下:functionname{command1;command2;commandN;}或者name(){command1;command2;commandN;}可以使用內(nèi)部命令unset的“-f”選項(xiàng)來(lái)取消函數(shù)的定義。8.2函數(shù)的參數(shù)、變量與返回值8.2.1實(shí)例:向函數(shù)傳遞參數(shù)Shell函數(shù)有自己的命令行參數(shù)。函數(shù)使用特殊變量$1,$2,..$n(本書(shū)5.4.3節(jié)所講述的Bash的位置參數(shù))來(lái)訪問(wèn)傳遞給它的參數(shù)。函數(shù)中使用參數(shù)的語(yǔ)法規(guī)則如下:name(){
arg1=$1arg2=$2commandon$arg1
}使用如下語(yǔ)法來(lái)調(diào)用函數(shù):namefoobar在這里,name=函數(shù)名foo=參數(shù)1:傳遞給函數(shù)的第一個(gè)參數(shù)(位置參數(shù)$1)bar=參數(shù)2:傳遞給函數(shù)的第二個(gè)參數(shù)(位置參數(shù)$2)8.2.2本地變量默認(rèn)情況下腳本中所有變量都是全局的,在函數(shù)中修改一個(gè)變量將改變這個(gè)腳本中此變量的值,這在某些情況下這可能是個(gè)問(wèn)題8.2.2本地變量我們可以使用local命令來(lái)創(chuàng)建一個(gè)本地變量,其語(yǔ)法如下所示:localvar=valuelocalvarName或者functionname(){
#定義一個(gè)本地變量varlocalvar=$1command1on$var
}local命令只能在函數(shù)內(nèi)部使用。local命令將變量名的可見(jiàn)范圍限制在函數(shù)內(nèi)部。8.2.3實(shí)例:使用return命令如果在函數(shù)里有Shell內(nèi)置命令return,則函數(shù)執(zhí)行到return語(yǔ)句結(jié)束,并且返回到Shell腳本中調(diào)用函數(shù)位置的下一個(gè)命令。如果return帶有一個(gè)數(shù)值型參數(shù),則這個(gè)參數(shù)就是函數(shù)的返回值,返回值的最大值是255;否則,函數(shù)的返回值是函數(shù)體內(nèi)最后一個(gè)執(zhí)行的命令的返回狀態(tài)。8.2.4實(shí)例:函數(shù)返回值測(cè)試可以直接在腳本調(diào)用函數(shù)語(yǔ)句的后面使用Shell特殊參數(shù)“?”來(lái)測(cè)試函數(shù)調(diào)用的返回值,通過(guò)特殊參數(shù)“?”可以得到最近一次執(zhí)行的前臺(tái)命令的退出狀態(tài)?;蛘咭部梢允褂胕f語(yǔ)句測(cè)試函數(shù)返回值。建議在if語(yǔ)句里用括號(hào)將函數(shù)調(diào)用括起來(lái)以增加可讀性。8.3函數(shù)的調(diào)用8.3.1實(shí)例:在Shell命令行調(diào)用函數(shù)在命令行中,可以通過(guò)直接輸入函數(shù)的名字,來(lái)調(diào)用或引用函數(shù):$function_name例如,定義一個(gè)叫做yday()的函數(shù)來(lái)顯示昨天的日期:$yday(){date--date='1dayago';}引用函數(shù)yday():$yday8.3.2實(shí)例:在腳本中調(diào)用函數(shù)要在腳本中調(diào)用函數(shù),首先要?jiǎng)?chuàng)建函數(shù),并確保它位于調(diào)用此函數(shù)的語(yǔ)句之前。要在腳本的開(kāi)頭定義和編寫(xiě)函數(shù)。同樣地,在腳本的開(kāi)頭定義所有變量。8.3.3實(shí)例:從函數(shù)文件中調(diào)用函數(shù)你可以把你所有的函數(shù)存儲(chǔ)在一個(gè)函數(shù)文件中。你可以把所有的函數(shù)加載到你的當(dāng)前腳本或是命令行。加載函數(shù)文件中所有函數(shù)的語(yǔ)法如下:./path/to/your/functions.sh8.3.4實(shí)例:遞歸函數(shù)調(diào)用遞歸函數(shù)是重復(fù)調(diào)用其自身的函數(shù),并且沒(méi)有遞歸調(diào)用次數(shù)的限制。8.4實(shí)例:將函數(shù)放在后臺(tái)運(yùn)行“&”操作符可以將命令放在后臺(tái)運(yùn)行并釋放你的終端,你同樣可以把函數(shù)放在后臺(tái)運(yùn)行。8.5小結(jié)通過(guò)本章的學(xué)習(xí),想
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度酒店財(cái)務(wù)保密協(xié)議書(shū)保密安全協(xié)議書(shū)
- 二零二五產(chǎn)學(xué)研技術(shù)轉(zhuǎn)移轉(zhuǎn)化合作協(xié)議:科技成果推廣與應(yīng)用3篇
- 二零二五年度出差安全責(zé)任追究與經(jīng)濟(jì)補(bǔ)償協(xié)議4篇
- 二零二五年度瓷磚原產(chǎn)地保護(hù)與全球采購(gòu)運(yùn)輸合作協(xié)議3篇
- 二零二五年度車輛擔(dān)保風(fēng)險(xiǎn)控制協(xié)議4篇
- 二零二四年度綜合園區(qū)投資方合作協(xié)議范本3篇
- 保健護(hù)理電器具的用戶反饋分析與利用考核試卷
- 二零二五年度2025版智能電網(wǎng)設(shè)備供應(yīng)與維護(hù)服務(wù)協(xié)議2篇
- 城市軌道交通的社會(huì)影響與改善措施考核試卷
- 信息系統(tǒng)性能優(yōu)化建議報(bào)告總結(jié)與反思探討和總結(jié)考核試卷
- 2024年銀行考試-興業(yè)銀行筆試參考題庫(kù)含答案
- 泵站運(yùn)行管理現(xiàn)狀改善措施
- 2024屆武漢市部分學(xué)校中考一模數(shù)學(xué)試題含解析
- SYT 0447-2014《 埋地鋼制管道環(huán)氧煤瀝青防腐層技術(shù)標(biāo)準(zhǔn)》
- 第19章 一次函數(shù) 單元整體教學(xué)設(shè)計(jì) 【 學(xué)情分析指導(dǎo) 】 人教版八年級(jí)數(shù)學(xué)下冊(cè)
- 浙教版七年級(jí)下冊(cè)科學(xué)全冊(cè)課件
- 弧度制及弧度制與角度制的換算
- 瓦楞紙箱計(jì)算公式測(cè)量方法
- 江蘇省中等職業(yè)學(xué)校學(xué)業(yè)水平考試商務(wù)營(yíng)銷類(營(yíng)銷方向)技能考試測(cè)試題
- DB32-T 4004-2021水質(zhì) 17種全氟化合物的測(cè)定 高效液相色譜串聯(lián)質(zhì)譜法-(高清現(xiàn)行)
- DB15T 2724-2022 羊糞污收集處理技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論