Команда curl для получения пути артефакта из circleci не работает, если URL содержит &

Я пытаюсь выполнить команду curl, как это, чтобы получить путь apk от circleci

 curl -u $CIRCLE_API_KEY: https://circleci.com/api/v1.1/project/github /<username>/<projectname>/latest/artifacts?branch=develop | grep -o 'https://[^"]*' > artifacts.txt

это возвращается

  % Total    % Received % Xferd  Average Speed   Time    Time       Time  Current
                             Dload  Upload   Total   Spent    Left   Speed
100  1229  100  1229    0     0   2063      0 --:--:-- --:--:-- --:--:--  2065

он работает нормально, и URL-адрес, как путь к apk, то есть https://123-67792073-gh.circle-artifacts.com/0/apks/.apk идет в artifacts.txt

Однако, если я добавлю "&filter=success" в конце URL-адреса curl, он не будет записывать в artifacts.txt и не будет выходить из команды.

curl -u $CIRCLE_API_KEY: https://circleci.com/api/v1.1/project/github/<username>/<projectname>/latest/artifacts?branch=develop&filter=success | grep -o 'https://[^"]*' > artifacts.txt

возвращается

[1] 43348
arsinha$ [ {
  "path" : "apks/<apkname>.apk",
 "pretty_path" : "apks/<apkname>.apk",
  "node_index" : 0,
  "url" : "https://123-67792073-gh.circle-artifacts.com /0/apks/<apkname>.apk"
},]

Он не выходит, так как я должен нажать Ctrl + C, чтобы выйти. Любая причина для этого, почему это происходит, когда к URL-адресу curl добавлено "&filter=success"

1 ответ

Вам нужно заключить URL в кавычки, чтобы оболочка не интерпретировала & как запрос, чтобы поместить команду в фоновом режиме.

например

curl -u $CIRCLE_API_KEY: "https://circleci.com/api/v1.1/project/github/<username>/<projectname>/latest/artifacts?branch=develop&filter=success" | grep -o 'https://[^"]*' > artifacts.txt
Другие вопросы по тегам