Linux 中的 Bash 函数是什么?
Bash 函数是 bash 脚本中可重用的代码块,可以组合在一起并命名以避免重复编写相同的代码。与其他编程语言非常相似,您可以选择在bash脚本中使用函数。函数可帮助您将整个脚本组织到较小的模块中,从而使代码更具可读性、易于调试和可重用。换句话说,函数就像脚本中的脚本。
如何在 Bash 中定义函数?
现在你已经对什么是bash函数有了基本的了解,让我们看看如何定义它们以使我们的Linux工作流程更加容易。定义 bash 函数的基本语法是:
<function_name>(){
<statements_to_execute>
}
您甚至可以使用上述语法的单行版本:
<function_name>() { <statements_to_execute>; }
关于定义 bash 函数要记住的一些要点包括:
- 写在 {} 中的每个语句和命令都称为函数体。对于函数名称,您可以使用除关键字以外的任何内容,关键字是为不同命令保留的特定单词。
- 与传统的 bash 脚本不同,函数不会执行,除非你调用它们。要执行函数,您需要使用函数名称。
- 使用单行版本时,您编写的每个命令都必须用分号“;”分隔。
- 在函数内声明的所有变量只能在函数主体内部访问。
让我们看一个基于上述语法的基本示例。首先在 Linux 文本编辑器中创建一个新文件,并在其中编写以下代码:
#!/bin/bash
hello_world () {
echo 'hello, world'
}
hello_world
建议使用与函数名称相同的名称保存文件。要调用该文件,只需在 shell 提示符内输入函数名称并按回车键即可。
./hello_world
如何将参数传递给 Bash 函数
有时,您可能需要使用一些自定义值,或者使用您创建的函数的用户输入值。要将参数传递给 bash 函数,只需在将函数作为 Linux shell 变量调用函数后在函数名称后提及它们。至于在函数中使用参数,请将它们与 、 放在下面等等。例如:$<argument_position>
$1
$2
#!/bin/bash
greeting () {
echo "Hello $1"
}
greeting "Beebom"
若要调用,请使用以下命令:
./greeting.sh
如何从 Bash 函数返回值
与其他编程语言不同,在 bash 中,您不能从函数返回值。您只能使用介于 0 到 255 之间的任何数字将 bash 函数的返回状态发送到调用方,其中 0 表示成功,任何其他数字表示 Linux 系统错误/失败。例如,在 Linux 的 nano 编辑器中复制此代码。
#!/bin/bash
greeting () {
echo "Hello $1"
return 10
}
greeting "Beebom"
echo The return value is $?
调用上述脚本时,将获得类似的输出以及值 10,指示发生了故障或错误。
Bash 函数中的变量作用域
变量的作用域是指可以在 bash 中使用变量的代码部分。范围主要可分为两部分 – 全局范围和局部范围。使用全局范围,该变量可以在任何地方使用,包括直接在 shell 提示符中。局部作用域意味着变量不能在声明它的块之外使用。
您在带有“local”关键字的 bash 函数中声明的每个变量都属于函数体的局部范围,不能在函数体之外使用。同样,全局变量可以从 bash 脚本中的任何位置访问,没有任何限制。以下示例将清楚地说明:
#!/bin/bash
global_var="I am global"
function display_global() {
echo "Inside function: $global_var"
local local_var="I am local"
echo "Inside function: $local_var"
}
display_global
echo "Outside function: $global_var"
echo "Outside function: $local_var"
执行上述脚本后,您将看到以下输出:
在 Bash 中使用函数的最佳实践
Bash 函数是强大的工具,可以增强 Linux 中 bash 脚本的结构、可维护性和可重用性。遵循以下最佳实践在 bash 中使用函数,这些函数可以极大地改善我们的工作流程:
- 保持函数简短而集中:尽量保持您编写的函数简短、简洁和集中,以执行单个任务。这将提高 bash 脚本的整体可读性和可维护性。
- 使用描述性名称:使用反映函数用途的简短但描述性名称作为函数名称。清晰而有意义的名称使代码更加不言自明,允许您以及其他开发人员维护和构建代码。
- 添加注释:不仅对于 bash 脚本,而且对于您使用的所有不同类型的编程语言,请使用注释来描述代码的哪一部分正在做什么。
- 重用函数:尽可能重用函数,以避免再次重写相同的代码。
- 避免函数名称冲突:避免使用与内置命令和其他命令行工具同名的函数。