个性化阅读
专注于IT技术分析

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
第一个函数...
第二个番薯...
$

要从shell中删除函数的定义,请使用带有.f选项的unset命令,此命令还用于将变量的定义移到shell中。

$ unset -f function_name
赞(0)
未经允许不得转载:srcmini » Linux shell编程:shell函数创建和使用完全解读

评论 抢沙发

评论前必须登录!