如何传递参数到Shell脚本函数

通常,在其他脚本语言中,您可以将参数和参数作为function_name(parameter1, parameter2,…)传递给函数,这在shell脚本函数中不支持。在shell脚本函数中,您可以在函数调用期间直接传递参数,而无需在函数定义中定义它们的名称,并直接使用位置参数 $1 作为第一个参数, $2 作为第二个参数,以此类推。

在shell脚本中定义函数有两种方法

function function_name {
    ... 
} 

OR

function_name () {
    ... 
}

无论是否传递参数,每个shell脚本函数都必须像上面那样定义。您将注意到,在函数签名中没有指定任何实参。

下面介绍如何调用同一个shell脚本函数

function_name arg1 arg2 ...

正如前面提到的,每个shell脚本函数通过其位置$1、$2等引用参数$0表示函数的名称。

下面是一个shell脚本函数的例子,它读取第一个参数并回显它。创建一个空的shell脚本,如下所示。

$ sudo vi test_script.sh

向它添加以下行。

#!/usr/bin/env sh

test() {
    echo "Parameter #1 is $1"
}

test 20

用以下命令运行上面的脚本。

$ sudo ./test_script.sh
Parameter #1 is 20

重要的是要记住,只能在函数定义之后调用函数。如果你在定义之前调用它,那么它会给你一个错误。

您还可以调用在shell脚本函数之外定义的变量,并将它们用作参数。在下面的例子中,我们使用了在函数外部定义的变量 $name 作为参数

$ sudo vi test_script.sh

向它添加以下行。

test() {
    echo hello $name
}

name="tom"
test

用以下命令运行上面的脚本。

$ sudo ./test_script.sh
hello tom

在本文中,我们研究了向shell脚本函数传递参数的两种不同方法。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐