开发手册 欢迎您!
软件开发者资料库

Linux shell脚本中的函数

函数能够将脚本的整体功能分解为更小的、逻辑上的子部分,然后在需要时调用这些子部分来执行它们各自的任务。使用函数执行重复的任务是创建代码重用的一种很好的方法。shell函数类似于其他编程语言中的子程序、过程和函数。本文主要介绍Linux shell脚本中的函数。

1、声明函数

需要声明函数,需使用以下语法:

function_name () {    需要执行的命令列表}

function_name是函数的名称,将使用它在脚本的其他地方调用。函数名后面必须跟圆括号,后面是用大括号括起来的命令列表。

例如,

#!/bin/bash# 定义函数MyFunc () {   echo "linux wonhero"
echo `date`}# 调用函数MyFunc

输出:

$ bash demo.sh
linux wonhero
2021年 10月 07日 星期四 18:18:28 CST

2、函数传参

可以定义一个函数,在调用函数时接受参数。这些参数可以用$1$2等等来表示。

例如,

#!/bin/bash# 定义函数MyFunc () {   echo "linux wonhero $1"
echo $2`date` }# 调用函数MyFunc website 当前时间:

输出:

$ bash demo.sh
linux wonhero website
当前时间:2021年 10月 07日 星期四 18:28:19 CST

注意:上面示例中传递了两个参数,一个是website,另一个是当前时间:

3、函数返回值

从函数内部执行exit命令,其效果不仅是终止函数的执行,而且还终止调用该函数的shell程序的执行。

如果只是想终止函数的执行,可以使用return命令从函数返回任何值,其语法如下所示:

return code

例如,

#!/bin/bash# 定义函数MyFunc () {   echo "linux wonhero $1"   echo $2`date`    return 1}# 调用函数MyFunc website 当前时间:ret=$?echo "返回值是 $ret"

输出:

$ bash demo.sh
linux wonhero website
当前时间:2021年 10月 07日 星期四 18:47:24 CST
返回值是 1

4、函数嵌套

函数内部可以调用自己,也可以调用其他函数。调用自身的函数称为递归函数。

例如,

#!/bin/bash# 函数中调用一个函数func_one () {   echo "第一个函数执行"   func_two}func_two () {   echo "第二个函数执行"}# 调用函数func_one

输出:

第一个函数执行
第二个函数执行

5、终端直接调用

可以将常用函数的定义放在.profile中。这些定义将在登录时可用,可以在命令提示符中使用它们。或者,可以将定义到一个文件中,例如,demo.sh,然后执行命令执行,如下,

$ . demo.sh

执行之后demo.sh中定义的函数被读取并定义到当前shell,可以在当前终端的窗口直接调用,如下所示,

$ func_one
第一个函数执行
第二个函数执行

如要从shell中删除函数的定义,使用unset -f命令。

例如,

$ unset -f function_name

注意unset还可以删除变量定义。