Linux 中的 Bash 函数
简介
函数是代码中保存一组指令的片段。与所有其他编程语言或脚本语言一样,我们可以在 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 脚本。
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

