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