通常,bash命令是定期执行的。因此,一个接一个地运行复杂或多个命令是很困难的。或者有时我们只想用一个命令来完成任务,而不需要深入其中并分发这个命令。这里有一些使事情变得非常简单的函数。函数获取参数并执行函数代码。函数有两种创建方法。这里是语法。喜欢第二个,因为可移植性很重要。
function function_name { function_body}
function_name () { function_body}
定义Bash函数
让我们创建一个函数,根据参数创建一个文件夹。
function test { echo "Hello"; echo "poftut.com";}
如你所见,我们曾经 ; 使事情更清楚,但忽略它们不会损害我们的代码。将此代码另存为名为test.sh的文本文件。
向函数传递参数
有时函数需要在内部使用参数。在函数中使用参数非常容易,只需将参数放在括号之间并进行函数调用。内部功能块使用 $1, $2, $3, … 这是参数行号。
function getParameters(){ echo $1; echo $2; echo $3; }
并调用名为 获取参数 带参数。
$ . ./bash_function.sh$ getParameters p1 p2 p3

如您所见,在第一次运行时,我们为函数提供了三个参数,并打印了所有参数,但在第二次运行时,我们只提供了两个参数,第三个参数打印为空,因为它没有在函数do echo$3中定义;作为空行打印。
函数返回值
在前面的示例中,我们只是调用函数并在这些函数中运行一些语句,比如printf 函数的真正威力来自于它的模块性。我们可以调用函数并简单地返回一些数据。这是一个更好的方法,因为我们可以使用不同格式的函数结果。我们可以在函数中使用echo语句来结束函数并将给定的数据返回给调用者。在本例中,我们将创建一个名为 mycat
它将连接给定的两个字符串并返回结果。
function mycat(){ echo "$1 $2" }
可变范围
在bash中,可以从当前会话中的每个位置访问变量。这意味着默认情况下,每个变量都是全局变量。在函数外部定义的变量可以从函数内部访问。如果在不同的作用域中有相同名称的变量,这可能会产生问题。
局部变量
我们可以在函数中定义变量,使它们只能从函数内部访问。这也将防止函数内外相同命名变量的合谋。我们可以用 local
关键字使变量成为局部变量。在本例中,我们将创建名为 age
函数的内部和外部。我们将设置内部函数 age
作为本地人。
age=40 function pr(){ local age=20 echo $age } pr echo $age

当我们从输出开始 age
将打印函数中的变量 20
而不是外部功能 age
可变印花 40
. 如果我们移除 local
从年龄变量,我们将得到20个变量打印。
相关文章: Javascript变量类型和范围
源代码块
Sourcing是bash中使用的一个术语,表示指定的bash脚本文件对于当前bash会话非常重要。认为您已经在bash文件中实现了一些函数,并且只想在当前bash会话中使用它们。我们使用下面的语法 测试.sh 包含要导入和删除的bash代码的文件 . 用于导入bash文件的运算符。
$ . test.sh$ getHostname lenovo.localhost