在学习了我们之前教程中关于 if-else 语句、switch-case 语句等的基础知识之后,是时候在 shell 脚本中创建函数了。 函数帮助我们将脚本划分为不同的部分,并使代码更具可移植性和可重用性。
在 Shell 脚本中定义函数
定义函数的基本语法就是函数名后跟圆括号。 请参见下面的示例。
function_name(){ code and variables to work with }
现在您知道如何定义函数了,让我们开始创建一些真正的函数。 您现在可能有一个问题: 你如何将参数传递给你的函数?
Bash 函数已经准备好接受参数。 它们应该以与我们传递 shell 参数的方式类似的方式传递。 让我们看几个例子来理解这一点。
将参数传递给 Bash 函数
#!/bin/bash new_function() { echo "Hi! How's it going?" echo "I was invoked with $1 $2" } new_function HowLinux Example
如您所见,我使用“Howlinux Example”调用了该函数,并自动将其传递给该函数。 现在我可以传递无限的函数,但由于函数不知道如何处理其余的参数,这些参数不会被打印出来。
那么我们如何打印出任意数量的参数呢? 我们将简单地替换 1 美元 2 美元 和 [email protected] 它会打印出所有传递给它的参数。 简单的?
使用函数返回值
好的,现在我们不仅需要对给定参数执行任务的函数,而且还需要返回值并弄清楚如何使用它们。
这也很容易。 为此,我们需要 美元? 运算符,它存储此运算符之前的命令的返回值。
#!/bin/bash new_function() { echo "Hi! How's it going?" echo "I was invoked with [email protected]" return 1 } new_function HowLinux Example echo $?
如您所见,捕获并打印了返回值 1。 另一种方法是将返回值分配给一个变量(默认情况下可以跨代码全局访问),然后在脚本中使用该变量。
从 Shell 脚本中的其他函数调用函数
与我们从外部调用函数的方式类似,我们可以从函数内部调用另一个函数。 在下面的示例中,我使用传递给 function1 的参数调用第二个函数 (function2) 并向其添加 1。 详细了解如何对变量执行操作。
#!/bin/bash function1() { echo "this is function 1 $1" function2 $(($1+1)) } function2() { echo "This is function 2 $1" } function1 5
Bash 函数中的变量范围
大多数编程语言都为我们提供了变量作用域的功能。 就像许多语言一样,变量的默认声明可以全局访问。 为了使变量只能在函数中访问,许多编程和脚本语言都提供了范围关键字。 让我们看一下范围关键字 bash.
#!/bin/bash A="This is global value for A" function1() { local A="This is local value for A" B="This is global and local value for B" echo $A echo $B } function1 echo $A echo $B
在上述脚本中使用“local”关键字后,“A”的局部值与全局值完全不同。 但是变量名是一样的。
结论
您现在应该很容易为自己转向一些高级脚本。 为自己创建一些脚本。 制作多个函数,甚至可以尝试使用相互调用的函数为您的函数创建一个循环。 这将是一个有趣的项目,您将在此过程中学到很多东西。 希望本教程对您有用。