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

# One line
hello1 () { echo "I am in hello1" ; }

# One line but declaring functions using the reserved word function
function hello2 { echo "I am in hello2"; }


# Multiline
function hello3 {
   echo "I am in hello3" ;
}

# Declaring functions without the function reserved word
# Multiline
hello4 () {
   echo "I am in hello4" ;
}
# Invoking functions
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

方法2:使用“$?”获取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

方法3:使用全局变量获取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:使用标准输出获取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函数并从终端调用

这里我们需要打开一个终端并像下面这样定义一个函数。然后按回车键。

示例

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脚本。

更新于:2023年3月29日

783 次浏览

开启你的职业生涯

通过完成课程获得认证

开始
广告