16.3.2 函数库etcinit.d/functions简介
很多Linux发行版中都有etcinit.d目录,这是系统中放置所有开机启动脚本的目录,这些开机脚本在脚本开始运行时都会加载etcinit.d/functions或etcrc.d/init.d/functions函数库(实际上这两个函数库的内容是完全一样的),如下所示:
- # Source function library.
- . etcinit.d/functions
- 或者
- # Source function library.
- . etcrc.d/init.d/functions
为了让大家对functions函数有个初步的理解,在介绍functions函数库之前,先创建下面的脚本,并尝试运行。
- [root@localhost ]# cat callFunctions01.sh
- #!/bin/bash
- source etcinit.d/functions
- confirm ITEM
- if [[ $? -eq 0 ]]; then
- echo "ITEM confirmed"
- else
- echo "ITEM not confirmed"
- fi
- #
- 运行结果
- [root@localhost ]# bash callFunctions01.sh
- Start service ITEM (Y)es/(N)o/(C)ontinue? [Y] Y
- ITEM confirmed
- [root@localhost ~]# bash callFunctions01.sh
- Start service ITEM (Y)es/(N)o/(C)ontinue? [Y] N
- ITEM not confirmed
从运行结果可以发现,脚本运行时会询问是否确认“Start service ITEM”,实际上这是functions函数库中confirm函数的功能,如果用户输入“Y”确认,该函数会返回0值,否则返回非0。如此简单的一个函数调用不但会让脚本运行起来更为优雅,同时也不需要用户自行实现这样的功能,从而可以把精力更多地放在脚本本身的功能上,简化了开发过程。实际上functions函数库中定义了27个函数,表16-1中列举了常见的17个。
表16-1 functions函数库中的常用函数
虽然说functions函数库为Linux管理员提供了一些好用的函数,但同时也可以看到,仅仅有这些函数还是远远不够的,所以自行开发函数库还是日常工作中很重要的部分。