有时候我们会经常的使用一个函数,这时候在每一个脚本中赋值粘贴也是一件很麻烦的事,这时候我们就可以把经常使用的函数写成函数库的形式。

一个很简单的小例子:我们需要知道当前正在运行操作系统的版本?当然如果我们直接使用uname命令很容易就会获得了,但是这里我们需要练习使用一下函数库:

1:首先写一个文本文件:这个文件的主要内容就是求出当前正在运行系统的版本。

[root@lvs ~]# vim library.sh

#!/bin/echo Warning:this is a library should be sourced!
#上面这一行的作用是防止数据库被意外执行

#定义函数test_platform用来测试当前的操作系统
test_platform(){
	local osname=`uname -s`
	PLATFORM=UNKNOWN
	case ${osname} in
	     "FreeBSD")
		PLATFORM="FREEBSD"
		;;
	      "SunOS")
		PLATFORM="SOLARIS"
		;;
	      "Linux")
		PLATFORM="LINUX"
		;;
	esac
	return 0
	}

这个文件就是我们的库函数:

2:写一个脚本调用库函数,输出当前系统的版本信息:

[root@lvs ~]# vim test.sh 

#!/bin/bash

#首先在脚本文件中包含进库文件library,从而可以调用其中定义的函数
source ./library.sh

#调用函数库中的test_platform
test_platform

#输出函数test_platform中定义的全局变量PLATFORM
echo
echo "Our running platform is $PLATFORM"
exit

然后我们执行执行test.sh脚本:

[root@lvs ~]# sh test.sh 

Our running platform is LINUX

关于库文件的几点说明:

  • 库文件的后缀是随意的,并没有严格的要求,我们在这里虽然使用了.sh后缀,但是这并不是一个脚本文件。

  • 由于不会直接运行库文件,而是把它包含在其他脚本文件中执行,所以库文件通常没有可执行权限:

  • 放置库文件的位置是随意的,不一定要和运行的脚本在同一个目录中,只要在脚本中指明路径即可。

  • 由于不希望库文件被用户直接执行,所以在库文件的第一行通常修改为“#!/bin/echo 警告信息”的形式,这样及时库文件被意外的执行,也会输出警告信息。