我有一个函数get_info_using_api
,它可以再调用一个函数get_data
函数get_data
带有一些参数并执行curl命令
这是内容
function get_data() {
local http_method="${1}"
local rest_call_url="${2}"
local other_paramas="${3}"
curl -s -k "${other_paramas}" -X $http_method $rest_call_url
}
现在我的get_info_using_api
看起来像这样
function get_info_using_api {
local api_key=${1}
local other_curl_options="-H "'Content-Type:application/json'" -H "'X-user:'$api_key''""
local http_method=GET
local url=something
data=$(get_curl_data $http_method $jenkins_url "${other_curl_options}")
}
因此,当我调用此函数get_info_using_api
时,执行的curl命令是
curl -s -k '-H Content-Type:application/json -H user:api_key' -X GET url
而我需要的是
curl -s -k '-H Content-Type:application/json' -H 'user:api_key' -X GET url
我正在尝试在行中添加这些单引号,但我无法这样做。 有人可以帮我吗
答案 0 :(得分:0)
将它们放入数组中。
function get_info_using_api {
local api_key="${1}"
local other_curl_options=(
"-H 'Content-Type:application/json'"
"-H 'X-user:$api_key'"
)
local http_method=GET
local url=something
data=$(get_curl_data $http_method $jenkins_url "${other_curl_options[@]}")
}
您可以将单打字面意义上嵌入双打内,当您使用"${x[@]}"
语法引用数组时,它将以单独的字符串返回args。
您可以使用以下方法测试逻辑:
$: x=( 1 2 3 )
$: printf "%s\n" "${x[@]}"
1
2
3
每个都单独打印。