Linux 中的 Bash 函数

linuxbashoperating system更新于 2026/2/7 8:37:17

简介

函数是代码中保存一组指令的片段。与所有其他编程语言或脚本语言一样,我们可以在 Linux 的 Bash 中使用函数。使用函数比不使用函数有很多优势。例如,代码更易于阅读和执行,并且函数可以在需要时在代码中重复使用。

虽然 Bash 函数存在一些限制,但如果有需要,使用函数进行 Bash 脚本编写仍然是不错的选择。定义 Bash 函数有两种方法

  • 在调用函数之前,在 Shell 脚本中定义 Bash 函数。

  • 直接在终端命令中定义 Bash 函数,并从终端调用。

让我们在本文中了解更多细节。

函数语法

以下是在 Linux 中定义 Bash 函数的不同方法。

  • 使用保留关键字 function,然后输入函数名称。

function <function name> {
   <function body…>
}
  • 与方案 1 相同,但可以一行代码。命令末尾必须使用分号 [;]。

function <function name> { <function body…> ; }
  • 无需使用 function 关键字,直接使用函数名称即可。

<function name> {
   <function body…>
}
  • 与场景 3 相同,但可以一行。此处命令末尾也需要分号 [;]。

<function name> { <function body…> ; }

现在让我们尝试一些 Bash 编程来理解 Bash 函数。

方法 1:4 种函数定义类型

示例

#!/bin/bash

# 单行
hello1 () { echo "I am in hello1" ; }

# 单行,但使用保留字 function 声明函数
function hello2 { echo "I am in hello2"; }

# 多行
function hello3 {
    echo "I am in hello3" ;
}

# 不使用保留字 function 声明函数
# 多行
hello4 () {
    echo "I am in hello4" ;
}
# 调用函数
hello1
hello2
hello3
hello4

在此程序中,我们使用不同的样式定义了四个函数 [hello1, hello2, hello3, hello4]。所有方法均正确,可根据用户需求使用。

要运行 bash 脚本,建议使用以下命令为文件名授予执行权限。

chmod 777 <bash script file name>

然后像这样运行 bash 脚本

./<filename.sh>

输出

I am in hello1
I am in hello2
I am in hello3
I am in hello4

方法二:使用"$?"获取 bash 函数的返回值

示例

#!/bin/bash

bash_return () {
   echo "I want to return 100"
   return 100
}
bash_return
echo $?

这里函数"bash_return"返回 100,我们通过"$?"变量获取它。然而,这并不是获取函数返回值的好方法。因为这个返回值会退出代码。

输出

I want to return 100
100

方法三:使用全局变量获取 bash 函数的返回值

示例

#!/bin/bash

bash_return_using_global_var () {
   global_var="I am inside global variable"
}

bash_return_using_global_var
echo $global_var

在此程序中,我们使用了一个全局变量来获取函数的返回值。

输出

I am inside global variable

方法 4:使用 stdout 获取 bash 函数的返回值

示例

#!/bin/bash

bash_return_to_stdout () {
   local bash_return1="10000"
   echo "Inside function -> $bash_return1"
}

bash_return1="$(bash_return_to_stdout)"
echo "$bash_return1"

在此程序中,我们使用局部变量来存储函数返回值。此值稍后可重复用于其他用途。

输出

Inside function -> 10000

方法 5:将参数传递给 Bash 函数

示例

#!/bin/bash

pass_arg () {
   echo "Here is the argument passed to this function: $1"
}

pass_arg "TUTORIALSPOINT"

这里我们已将第一个参数传递给函数。

输出

Here is the argument passed to this function: TUTORIALSPOINT

方法 6:直接在终端中声明 Bash 函数并从终端调用

这里我们需要打开一个终端并定义一个如下所示的函数。然后按 Enter 键。

示例

terminal_func () { echo "I am running from terminal"; echo "Thank You"; }

然后在终端中输入函数名称"terminal_func"并按回车键。

输出

I am running from terminal
Thank You

如果我们想删除一个 Bash 终端函数,我们可以在终端中使用以下命令

unset terminal_func

然后,如果我们尝试调用函数"terminal_func",将会收到以下错误

terminal_func: command not found

结论

通过本文,我们将学习 Bash 函数的许多方面,例如以不同的方式定义函数、函数的返回值、传递函数参数以及从终端运行 Bash 函数。这有助于我们在 Linux 中编写简单高效的 Bash 脚本。


有用资源