首页 > 编程笔记

Shell脚本函数的用法

Bash Shell 中提供了用户自定义函数,将 Shell 脚本代码放进函数中封装起来,这样就可以在脚本中的任何地方多次使用,从而减少了代码的重写。

本节将逐步介绍如何创建脚本函数,以及脚本函数的使用等。

一个函数就是一个子程序,主要用于实现一串操作的脚本代码块。在 Bash 中也有函数。在开始编写那些比较复杂的脚本时,那些重复使用了部分能够执行特定任务的代码不需要多次被重写,只需要写一次,然后在脚本中就可以多次引用该部分代码。

Bash Shell 中就有这种功能,称为“调用函数”。如果想要在脚本中使用该代码块,只需要使用所起的函数名就可以了。接下来将详细介绍如何在 Shell 脚本中创建和使用函数。

脚本函数的创建

在 Bash Shell 脚本中创建函数的格式有以下两种:
1) 使用关键字 function 后加分配给该代码块的函数名。

function name{
    commands
}

name 属性定义了赋予函数的唯一名称,在脚本中定义的每个函数都必须有一个唯一的名称。

commands 表示构成函数的一条或多条 Bash Shell 命令。在调用该函数时,Bash Shell 会按命令在函数中出现的顺序依次执行,和在普通脚本中的执行是一样的。

2) 在 Bash Shell 脚本中定义函数的另一种格式和其他编程语言中定义函数的方式类似。格式如下:

name(){
    commands
}

函数名后的空括号表明正在定义的是一个函数。commands 也代表着构成函数的一条或多条 Bash Shell 命令。

脚本函数的使用

在脚本中使用函数和其他Shell命令一样,只需要指定函数的名称就可以了。

【例 1】函数的使用。
首先,创建一个 test.sh 脚本文件。使用 vim 编辑器打开该脚本文件,输入 i 命令进入插入模式。

在脚本文件中创建如下所示的函数:

function abc(){
    echo abc
}
echo abc

在此基础上,使用 sh(Bash)进程来执行脚本文件,输出结果如下所示:

[root@bogon ~]# sh test.sh
abc

每次引用函数名 abc 时,Bash Shell 都会首先找到 abc 函数的定义并执行在函数里定义的命令。Bash 中的函数必须在其第一次调用之前被完成,但是只要在执行顺序中,函数的定义在函数的使用之前即可。如果在函数被定义前使用函数,则会出现错误信息。

Bash 的函数能够接受参数并返回退出状态码。默认情况下,函数的退出状态码是函数中最后一条命令返回的退出状态码。在函数执行结束之后,可以使用标准变量“$?”来确定函数的退出状态码。退出状态可以由 return 来指定 statement,否则函数的退出状态是函数最后一个执行命令的退出状态(0 表示成功,非 0 表示出错代码)。

【例 2】退出状态码。
在例 1 的基础上添加标准变量“$?”,命令如下所示:

function abc(){
    echo abc
}
echo ahc
echo "The exit status is:$?"

使用 sh(Bash)进程执行脚本文件,输出结果为:

[root@bogon ~]# sh test.sh
ahc
The exit status is:0

优秀文章