Linux shell编程(shell函数创建和使用完全解读)

上一篇Linux shell编程教程请查看: shell输入输出重定向介绍和用法
在本章中我们将详细讨论shell函数,函数使你能够将脚本的整体功能分解为更小的逻辑子部分,然后可以在需要时调用它们来执行各自的任务。
使用函数执行重复的任务是创建代码重用的一种很好的方法,这是现代面向对象编程原则的重要组成部分,shell函数类似于其他编程语言中的子例程、过程和函数。
1、创建函数要声明一个函数只需使用以下语法:

function_name () { list of commands }

函数的名称是function_name,这是从脚本的其他地方调用它的方法。函数名后面必须跟一个圆括号,后面跟一个用大括号括起来的命令列表。
下面的示例展示了函数的使用:
#!/bin/bash# 定义函数 Hello () { echo "Hello World" }# 调用函数 Hello

2、将参数传递给函数你可以定义一个在调用函数时接受参数的函数,这些参数将由$1、$2等表示。下面是一个例子,我们传递两个参数AA和BB,然后在函数中捕获并打印这些参数。
#!/bin/bash# 定义函数 Hello () { echo "输出参数: $1 $2" }# 调用函数并传递参数 Hello AA BB

3、从函数返回值如果从函数内部执行exit命令,其效果不仅是终止函数的执行,而且终止调用该函数的外壳程序的执行。
如果你只是想终止函数的执行,那么有一种方法可以从定义的函数中出来,根据这种情况可以使用return命令从函数返回任何值,其语法如下所示:
return code

这里的代码可以是你在这里选择的任何内容,但显然你应该选择在整个脚本上下文中有意义或有用的内容,下面的函数返回一个值10。
#!/bin/bash# 定义函数 Hello () { echo "输出参数: $1 $2" return 10 }# 调用函数 Hello AA BB# 获取最后一个命令返回的值 ret=$?echo "返回值为: $ret"

4、嵌套函数函数的一个更有趣的特性是它们可以调用自己和其他函数,调用自身的函数称为递归函数。下面的例子演示了两个函数的嵌套:
#!/bin/bash# 从一个函数调用另一个函数 number_one () { echo "第一个函数..." number_two }number_two () { echo "第二个番薯..." }# 调用第一个函数 number_one

5、来自提示符的函数调用你可以将常用函数的定义放在.profile文件中,无论何时登录,这些定义都是可用的,你可以在命令提示符中使用它们。
或者可以将定义分组到一个文件中如test.sh,然后通过键入以下内容来执行当前shell中的文件:
$. test.sh

这将导致在test.sh中定义的函数被读取并定义到当前shell如:
$ number_one 第一个函数... 第二个番薯... $

【Linux shell编程(shell函数创建和使用完全解读)】要从shell中删除函数的定义,请使用带有.f选项的unset命令,此命令还用于将变量的定义移到shell中。
$ unset -f function_name

    推荐阅读