将单引号添加到bash中一行的变量中



我有一个函数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

我试图在这行中添加这些单引号,但我做不到。有人能帮我处理这个吗

将它们放在一个数组中。

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[@]}")
}

您可以将singles嵌入到doubles中,当您使用"${x[@]}"语法引用数组时,它会将args作为单独的字符串返回。

你可以用这个测试逻辑:

$: x=( 1 2 3 )
$: printf "%sn" "${x[@]}"
1
2
3

每个都单独打印。

相关内容

  • 没有找到相关文章

最新更新