Ошибка при использовании curl в оболочке jenkins

Я скручиваю API, чтобы получить дайджест содержимого докера

curl -k -v --silent -H+  Accept: application/vnd.docker.distribution.manifest.v2+json -X GET https://xxx/v2/proj/image/manifests/latest
awk {print ($3)}
+ grep Docker-Content-Digest
+ 

Я говорю: DCD = дайджест, который найден

DCD=sha256:e8e7df98e780885012a05dc468fc5f60d30ce51062e09e1bc82f9644d20de9d9
    + 

Здесь я выполняю DCDN="${DCD%$'\r'}", который я прочитал in-ur">здесь:

DCDN=sha256:e8e9df98e780885012a05dc468fc5f60d30ce51062e09e1bc82f9644d20de9d9

Я также проверяю, заканчивается ли он на 0d, что кажется (проблема?). Для этого я выполняю: printf %s "$DCDN" | xxd

+ printf %s sha256:e8e9df98e780885012a05dc468fc5f60d30ce51062e09e1bc82f9644d20de9d9
+ xxd
0000000: 7368 6132 3536 3a65 3865 3764 6639 3865  sha256:e8e9df98e
0000010: 3738 3038 3835 3031 3261 3035 6463 3436  780885012a05dc46
0000020: 3866 6335 6636 3064 3330 6365 3531 3036  8fc5f60d30ce5106
0000030: 3265 3039 6531 6263 3832 6639 3634 3464  2e09e1bc82f9644d
0000040: 3230 6465 3964 390d                      20de9d9.

Потому что, когда я пытаюсь свернуть вывод моего DCD после URL-адреса, кажется, что он работает неправильно... (Он отлично работает, если я скопирую команду и запущу ее. Но не в jenkinsshell)

curl -k -v --silent -X GET https://xxx/v2/proj/image/manifests/latest/sha256:e8e9df98e780885012a05dc468fc5f60d30ce51062e09e1bc82f9644d20de9d9
* Illegal characters found in URL
* Closing connection -1

person DenCowboy    schedule 24.08.2016    source источник
comment
Байт, представленный в шестнадцатеричном формате 0d, представляет собой возврат каретки, что действительно недопустимо в URL-адресе. %$'\r' должен был удалить его, но, видимо, этого не сделал. Копирование и вставка работают, потому что копирование копирует только видимые символы, а возврат каретки не виден. Вы можете попробовать ${DCD%?} удалить последний символ без проверки; это жесткий подход, но он может сработать.   -  person dave_thompson_085    schedule 24.08.2016