在本章中,我们将详细讨论Shell函数。函数使您可以将脚本分解成多个小的代码函数,有利于代码复用。
要声明一个函数,只需使用以下语法-
function_name () { list of commands }
函数的名称为 function_name ,这就是您将要从脚本其他位置调用它的名称。函数名称后必须带有括号,并在括号内包含命令列表。
以下示例显示了功能的使用-
#!/bin/sh # 定义函数 Hello () { echo "Hello Learnfk" } # 调用函数 Hello
执行后,您将收到以下输出-
$./test.sh Hello Learnfk
您可以定义一个接收参数的函数。这些参数将由 $1 , $2 等表示。
下面是一个示例,其中我们传递了两个参数 Learnfk 和 Toolfk ,然后在函数中捕获并打印这些参数。
#!/bin/sh # 定义函数 Hello () { echo "Hello World $1 $2" } # Invoke your function Hello Learnfk Toolfk
执行后,您将收到以下输出-
$./test.sh Hello World Learnfk Toolfk
如果从函数内部执行 exit 命令,则其作用不仅是终止函数的执行,而且还终止调用该函数的Shell程序的执行。
相反,如果您只想终止函数的执行,则可以通过一种方法来定义函数。
根据情况,您可以使用 return 命令从函数中返回任何值-
return code
以下函数返回值10-
#!/bin/sh # 定义函数 Hello () { echo "Hello World $1 $2" return 10 } # 调用函数 Hello Learnfk Toolfk # 获取上一条命令返回的值 ret=$? echo "Return value is $ret"
执行后,您将收到以下输出-
$./test.sh Hello World Learnfk Toolfk Return value is 10
函数的更有趣的功能之一是它们可以调用自己以及其他函数。调用自身的函数称为 递归函数 。
以下示例演示了两个函数的嵌套-
#!/bin/sh # Calling one function from another number_one () { echo "This is the first function speaking..." number_two } number_two () { echo "This is now the second function speaking..." } # Calling function one. number_one
执行后,您将收到以下输出-
This is the first function speaking... This is now the second function speaking...
您可以将常用功能的定义放在 .profile 中。这些定义在您每次登录时都可用,并且可以在命令提示符下使用它们。
或者,您可以将定义分组到一个文件中,如 test.sh ,然后通过键入以下内容在当前shell中执行该文件:
链接:https://www.learnfk.comhttps://www.learnfk.com/linux/linux-shell-functions.html
来源:LearnFk无涯教程网
$. test.sh
这具有导致读取 test.sh 内部定义的函数并将其定义到当前shell的效果,如下所示-
$number_one This is the first function speaking... This is now the second function speaking... $
要从Shell中删除函数的定义,请使用带有 .f 选项的unset命令。此命令还用于将变量的定义删除到Shell程序。
$unset -f function_name
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)