问:
我试图搜索如何在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中连接字符串变量