как избавиться от лишних символов, добавленных в команду curl при вызове функции в bash - PullRequest
0 голосов
/ 11 октября 2018

У меня есть функция bash, которая вызывает команду curl для выполнения некоторой операции jenkins (удалить отложенные проекты)

function get_data {
        local user="${1}"               # user
        local api_token="${2}"          # token
        local http_method="${3}"        # POST
        local rest_call_url="${4}"      
        local other_curl_opt="${5}"     # -H "Content-Type:application/json" -H "X-Api:asdhds890asd"

         # encode space characters
         rest_call_url=$(echo "$rest_call_url" | sed 's/ /%20/g')

         # gets data
         data=$(curl -u ${user}:${api_token} -k -s ${other_curl_opt} -X $http_method "${rest_call_url}")
         return_status=$?

        if [[ "${data}" = *"HTTP Status 404"* ]] || [[ "${data}" = *"HTTP ERROR 404"* ]] || [[ "${data}" = *"Bad parameter"* ]] || [ $return_status -ne 0 ]
        then
                print_log ${job_name} ERROR "Curl command failed"
        else
                print_log ${job_name} INFO "Curl command successful"
        fi
}

эта функция вызывается еще в одной функции после передачи необходимых параметров

это вызов функции

jenkins_operation_url=https://${jenkins_instance}/shelvedProjects/manageShelvedProject/
                                    opts="--data \"projects=${job_name}\" --data \"delete=\""
                                    get_data "${jenkins_user}" "${api_token}" "POST" "${jenkins_operation_url}" "${opts}"

Теперь проблема заключается в том, что при вызове этой функции к вызову curl добавляются некоторые дополнительные символы

пример данных

curl -u user:xxxxxxxxxxxxxxx -k -s --data '"projects=xxxxa"' --data '"delete="' -X POST https://xxxxxxxx/shelvedProjects/manageShelvedProject/
+ data='Bad parameter. Should be '\''unshelve'\'' or '\''delete'\'' only.'

Я не уверен, откуда эти дополнительные символы (одинарные кавычки) добавляются

--data '"projects=xxxxa"' --data '"delete="'

Может кто-нибудь, пожалуйста, помогите исправить мой код

1 Ответ

0 голосов
/ 11 октября 2018

когда вы присваиваете значение переменной, вы должны всегда использовать кавычки, кроме чисел вроде этого:

jenkins_operation_url="https://${jenkins_instance}/shelvedProjects/manageShelvedProject/"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...