16.3.2 函数库etcinit.d/functions简介

很多Linux发行版中都有etcinit.d目录,这是系统中放置所有开机启动脚本的目录,这些开机脚本在脚本开始运行时都会加载etcinit.d/functions或etcrc.d/init.d/functions函数库(实际上这两个函数库的内容是完全一样的),如下所示:


  1. # Source function library.
  2. . etcinit.d/functions
  3. 或者
  4. # Source function library.
  5. . etcrc.d/init.d/functions

为了让大家对functions函数有个初步的理解,在介绍functions函数库之前,先创建下面的脚本,并尝试运行。


  1. [root@localhost ]# cat callFunctions01.sh
  2. #!/bin/bash
  3. source etcinit.d/functions
  4. confirm ITEM
  5. if [[ $? -eq 0 ]]; then
  6. echo "ITEM confirmed"
  7. else
  8. echo "ITEM not confirmed"
  9. fi
  10. #
  11. 运行结果
  12. [root@localhost ]# bash callFunctions01.sh
  13. Start service ITEM (Y)es/(N)o/(C)ontinue? [Y] Y
  14. ITEM confirmed
  15. [root@localhost ~]# bash callFunctions01.sh
  16. Start service ITEM (Y)es/(N)o/(C)ontinue? [Y] N
  17. ITEM not confirmed

从运行结果可以发现,脚本运行时会询问是否确认“Start service ITEM”,实际上这是functions函数库中confirm函数的功能,如果用户输入“Y”确认,该函数会返回0值,否则返回非0。如此简单的一个函数调用不但会让脚本运行起来更为优雅,同时也不需要用户自行实现这样的功能,从而可以把精力更多地放在脚本本身的功能上,简化了开发过程。实际上functions函数库中定义了27个函数,表16-1中列举了常见的17个。

表16-1 functions函数库中的常用函数

16.3.2 函数库etcinit.d/functions简介 - 图1

16.3.2 函数库etcinit.d/functions简介 - 图2

虽然说functions函数库为Linux管理员提供了一些好用的函数,但同时也可以看到,仅仅有这些函数还是远远不够的,所以自行开发函数库还是日常工作中很重要的部分。