我正在编写一个函数,它将进行 REST API 调用,可以是GET
, PUT
, DELETE
,POST
等。
我想将此方法作为参数提供给函数,并将其添加到该单个函数调用的选项数组中。这可能吗?
目前我正在通过创建一个单独的local
数组来解决这个问题,但我更愿意只使用单个options
数组。
#!/bin/bash
options=(
--user me:some-token
-H "Accept: application/json"
)
some_func () {
local urn=$1
shift
local func_opts=("${options[@]}" "$@")
printf '%s\n' "${func_opts[@]}"
}
# This should return all options including -X GET
some_func /test -X GET
# This should return only the original options
printf '%s\n' "${options[@]}"
我也可以使用一个临时数组来存储 的内容options
,添加新选项,然后在函数结束之前重置它,但我认为这也不是一个特别干净的方法。
使用 bash 5.0 及更高版本,您可以使用
localvar_inherit
导致local
行为类似于基于 ash 的 shell 的选项,即在local var
不更改其值或属性的情况下使变量成为本地变量:对于任何版本,您还可以执行以下操作:
一种选择是显式使用函数的子shell,然后覆盖其数组的本地副本,知道一旦子shell退出,原始变量就不会改变: