добавить одинарные кавычки к переменной в строке в bash - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть функция 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

я пытаюсь добавить эти одинарные кавычки в строке, но я не могу.Может ли кто-нибудь помочь мне с этим

1 Ответ

0 голосов
/ 28 ноября 2018

Поместите их в массив.

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[@]}", он вернет аргументы в виде отдельных строк.

Вы можете проверить логику следующим образом:

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

Каждый печатается отдельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...