Я скручиваю 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
%$'\r'
должен был удалить его, но, видимо, этого не сделал. Копирование и вставка работают, потому что копирование копирует только видимые символы, а возврат каретки не виден. Вы можете попробовать${DCD%?}
удалить последний символ без проверки; это жесткий подход, но он может сработать. - person dave_thompson_085   schedule 24.08.2016