復用聪富,復用甥厦,復用:經(jīng)濟又安全
介紹
shell中的函數(shù)(function)是指命令序列(定義)掘宪,可引用或重用(語用)。
格式
一般格式如下:
name() { command; ... command; }
調(diào)用函數(shù)就像執(zhí)行普通命令一樣歇盼,輸入函數(shù)名稱即可執(zhí)行舔痕。
特性
函數(shù)的重要特性是:
命令行上出現(xiàn)在函數(shù)后的參數(shù)會依次分配給位置參數(shù)
$1
,p2
,$3
...豹缀。
之外伯复,還有一些特性值得注意:
- 「子shell」:函數(shù)僅存在于它所定義的shell中,無法傳給子shell邢笙;
- 「變量&目錄」:函數(shù)對于當前目錄或變量作出的修改在函數(shù)執(zhí)行完畢之后依然會保留啸如。
優(yōu)勢
函數(shù)的優(yōu)勢有:
- 「速度更快」:是因為shell不需要搜索磁盤來查找程序、打開文件并將文件內(nèi)容讀入內(nèi)存氮惯,只需要跳轉(zhuǎn)到相應的位置叮雳;
- 「管理模塊化」@> 可以將相關的shell程序全都放進單個文件中。
函數(shù)的之外
刪除自定義的函數(shù):使用帶有-f
選項的unset
命令可以從shell中刪除函數(shù)妇汗。
從函數(shù)內(nèi)部退出:
- 命令
exit
:如果在函數(shù)內(nèi)部使用exit
帘不,不僅會終止函數(shù)的執(zhí)行,而且還會使得調(diào)用該函數(shù)的shell程序退出杨箭,返回到命令行寞焙。 - 命令
return
:如果您只是想退出函數(shù),可以使用命令return
,形如:return n
捣郊,n
作為該函數(shù)的「返回狀態(tài)」辽狈。 - 缺省情況:如果忽略的話,則使用函數(shù)中最后執(zhí)行的那條命令的「退出狀態(tài)」呛牲,這種情況也適用于函數(shù)中沒有包含
return
命令的時候稻艰。
注意:返回狀態(tài)在其他方面和退出狀態(tài)一樣:可以使用shell變量$?
來訪問它,也可以在if
/while
和until
命令中對其進行測試侈净。
實踐建議:可以將常用函數(shù)定義放入.profile
中尊勿,或單獨某文件如myfuncs
,后在當前shell中執(zhí)行該文件:. myfuncs
畜侦。
參考資料
UNIX/Linux/OS X中的Shell編程@ISBN: 9787115470416:https://book.douban.com/subject/30410589/