向Bash函数传递参数

2023-09-25 11:01:32 浏览数 (2)

问:

我试图搜索如何在Bash函数中传递参数,但出现的总是如何从命令行传递参数。

我想在我的脚本中传递参数。我试着:

代码语言:javascript复制
myBackupFunction("..", "...", "xx")

function myBackupFunction($directory, $options, $rootPassword) {
     ...
}

但是语法不正确。如何将参数传递给函数?

答:

有两种典型的定义函数的方法

代码语言:javascript复制
function function_name {
   command...
}

代码语言:javascript复制
function_name () {
   command...
}

保留字function是可选的。如果写了保留字function,圆括号是可选的。

除非发生语法错误或已存在同名的只读函数,否则函数定义的退出状态为零。执行时,函数的退出状态码是在主体中执行的最后一个命令的退出状态码。

调用带参数的函数:

代码语言:javascript复制
function_name "$arg1" "$arg2"

函数通过位置(而不是名称)引用传入的参数,即1、2,以此类推。另外

示例:

代码语言:javascript复制
foo () {
   echo "Parameter #1 is $1"
}

此外,你需要在函数声明后调用它。

代码语言:javascript复制
#!/usr/bin/env bash

foo 1  # 这将失败,因为foo还没有被声明

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

foo 2 # 这将正常运行

参考:

  • stackoverflow question 6212219
  • https://www.gnu.org/software/bash/manual/bash.html#Shell-Functions

相关阅读:

  • 如何在Bash中解析命令行参数?
  • 如何在Bash中连接字符串变量

0 人点赞