课程表

UNIX 基础

UNIX Shell编程

UNIX 进阶

UNIX 常用资源

工具箱
速查手册

UNIX Shell函数

当前位置:免费教程 » 数据库/运维 » UNIX

函数允许你将一个脚本的整体功能分解成更小的逻辑子部分,然后当需要的时候可以被调用来执行它们各自的任务。

使用函数来执行重复性的任务是一个创建代码重用的很好的方式来。代码重用是现代面向对象编程的原则的重要组成部分。

Shell 函数类似于其他编程语言中的子程序和函数。

创建函数

声明一个函数,只需使用以下语法:

  1. function_name () {
  2. list of commands
  3. }

函数的名字是 function_name,在脚本的其它地方你可以用函数名调用它。函数名后必须加括号,在其后加花括号,其中包含了一系列的命令。

例子

以下是使用函数的简单例子:

  1. #!/bin/sh
  2. # Define your function here
  3. Hello () {
  4. echo "Hello World"
  5. }
  6. # Invoke your function
  7. Hello

当你想执行上面的脚本时,它会产生以下结果:

  1. $./test.sh
  2. Hello World
  3. $

函数的参数传递

你可以定义一个函数,在调用这些函数的时候可以接受传递的参数。这些参数可以由 $1,$2 等表示。

以下是一个例子,我们传递两个参数 ZaraAli ,然后我们在函数中捕获和编译这些参数。

  1. #!/bin/sh
  2. # Define your function here
  3. Hello () {
  4. echo "Hello World $1 $2"
  5. }
  6. # Invoke your function
  7. Hello Zara Ali

这将产生以下结果:

  1. $./test.sh
  2. Hello World Zara Ali
  3. $

函数返回值

如果你从一个函数内部执行一个 exit 命令,不仅能终止函数的执行,而且能够终止调用该函数的 Shell 程序。

如果你只是想终止该函数的执行,有一种方式可以跳出定义的函数。

根据实际情况,你可以使用 return 命令从你的函数返回任何值,其语法如下:

  1. return code

这里的 code 可以是你选择的任何东西,但很明显,考虑到将脚本作为一个整体,你应该选择有意义的或有用的东西。

例子

下面的函数返回一个值 1:

  1. #!/bin/sh
  2. # Define your function here
  3. Hello () {
  4. echo "Hello World $1 $2"
  5. return 10
  6. }
  7. # Invoke your function
  8. Hello Zara Ali
  9. # Capture value returnd by last command
  10. ret=$?
  11. echo "Return value is $ret"

这将产生以下结果:

  1. $./test.sh
  2. Hello World Zara Ali
  3. Return value is 10
  4. $

嵌套函数

函数更有趣的功能之一就是他们可以调用本身以及调用其他函数。调用自身的函数被称为递归函数。

下面简单的例子演示了两个函数的嵌套:

  1. #!/bin/sh
  2. # Calling one function from another
  3. number_one () {
  4. echo "This is the first function speaking..."
  5. number_two
  6. }
  7. number_two () {
  8. echo "This is now the second function speaking..."
  9. }
  10. # Calling function one.
  11. number_one

这将产生以下结果:

  1. This is the first function speaking...
  2. This is now the second function speaking...

从 Prompt 函数调用

你可以把常用函数的定义放置到文件 .profile 中,这样当你载入的时候可以得到它们并且在 prompt 命令中使用它们。

或者,你可以将多个函数定义在一个文件中,比如 test.sh,然后通过键入以下内容当前 Shell 中执行该文件:

  1. $. test.sh

这样做可以使 test.sh 内定义的任何函数被读入,定义到当前 Shell ,如下:

  1. $ number_one
  2. This is the first function speaking...
  3. This is now the second function speaking...
  4. $

要从 Shell 删除函数的定义,你可以使用带 .f 选项的 unset 命令。这也是用来删除 Shell 中一个变量的定义的命令。

  1. $unset .f function_name
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号