复用,复用,复用:经济又安全
介绍
shell中的函数(function)是指命令序列(定义),可引用或重用(语用)。
格式
一般格式如下:
name() { command; ... command; }
调用函数就像执行普通命令一样,输入函数名称即可执行。
特性
函数的重要特性是:
命令行上出现在函数后的参数会依次分配给位置参数
$1
,p2
,$3
...。
之外,还有一些特性值得注意:
- 「子shell」:函数仅存在于它所定义的shell中,无法传给子shell;
- 「变量&目录」:函数对于当前目录或变量作出的修改在函数执行完毕之后依然会保留。
优势
函数的优势有:
- 「速度更快」:是因为shell不需要搜索磁盘来查找程序、打开文件并将文件内容读入内存,只需要跳转到相应的位置;
- 「管理模块化」@> 可以将相关的shell程序全都放进单个文件中。
函数的之外
删除自定义的函数:使用带有-f
选项的unset
命令可以从shell中删除函数。
从函数内部退出:
- 命令
exit
:如果在函数内部使用exit
,不仅会终止函数的执行,而且还会使得调用该函数的shell程序退出,返回到命令行。 - 命令
return
:如果您只是想退出函数,可以使用命令return
,形如:return n
,n
作为该函数的「返回状态」。 - 缺省情况:如果忽略的话,则使用函数中最后执行的那条命令的「退出状态」,这种情况也适用于函数中没有包含
return
命令的时候。
注意:返回状态在其他方面和退出状态一样:可以使用shell变量$?
来访问它,也可以在if
/while
和until
命令中对其进行测试。
实践建议:可以将常用函数定义放入.profile
中,或单独某文件如myfuncs
,后在当前shell中执行该文件:. myfuncs
。
参考资料
UNIX/Linux/OS X中的Shell编程@ISBN: 9787115470416:https://book.douban.com/subject/30410589/