Ошибка CURL «URL, использующий неверный / недопустимый формат или отсутствующий URL» при попытке передать переменную как часть URL - PullRequest
0 голосов
/ 23 сентября 2019

Когда я пытаюсь выполнить скрипт ниже и получаю сообщение об ошибке: «curl: (3) URL, использующий неверный / недопустимый формат или отсутствующий URL»

#!/bin/bash

stage="develop"
branch="branch_name"

getDefinition=$(curl -u user@example.com:password -X GET "https://dev.azure.com/organization/project/_apis/build/definitions?api-version=5.1")

for def in $(echo "$getDefinition" | jq '.value[] | select (.path=="\\Some_path\\'$stage'") | .id'); do
  getBuildInfo=$(curl -u user@example.com:password -X GET "https://dev.azure.com/organization/project/_apis/build/definitions/${def}\?api-version=5.1")
        # echo $def
        body=$(echo "${getBuildInfo}" | jq '.repository.defaultBranch = "refs/heads/release/'"${branch}"'"' | jq '.options[].inputs.branchFilters = "[\"+refs/heads/release/'"${branch}"'\"]"' | jq '.triggers[].branchFilters[] = "+refs/heads/release/'"${branch}"'"')
        echo ${body} > data.json    
done

Это происходит, когда я пытаюсь передатьпеременная $ {def} в строку:

curl -u user@example.com:password -X GET "https://dev.azure.com/organization/project/_apis/build/definitions/${def}\?api-version=5.1"

Но когда я объявляю массив, curl работает как положено.Пример:

declare -a def
def=(1 2 3 4)

curl -u user@example.com:password -X GET "https://dev.azure.com/organization/project/_apis/build/definitions/${def}\?api-version=5.1"

Не могли бы вы подсказать, как правильно передать переменную в URL?

1 Ответ

0 голосов
/ 23 сентября 2019

Вам нужно 4 раза позвонить в curl?Если так.

for def in 1 2 3 4; do curl -u user@example.com:password -X GET "https://dev.azure.com/organization/project/_apis/build/definitions/${def}\?api-version=5.1"; done
...