上一篇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
第一个函数...
第二个番薯...
$
要从shell中删除函数的定义,请使用带有.f选项的unset命令,此命令还用于将变量的定义移到shell中。
$ unset -f function_name
评论前必须登录!
注册