Bash 在jenkins shell中使用curl时出错

Bash 在jenkins shell中使用curl时出错,bash,curl,jenkins,docker-registry,Bash,Curl,Jenkins,Docker Registry,我卷曲api以获得docker内容摘要 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:e8e7df98e780885012a0

我卷曲api以获得docker内容摘要

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'}”
我读到:

我还检查它是否以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.
因为当我尝试在URL之后卷曲DCD的输出时,它似乎没有以正确的方式工作。。。(如果我复制命令并运行它,效果很好,但在Jenkinshell中不行)


十六进制0d中表示的字节是回车,这在URL中确实是非法的。
%$'\r'
应该删除它,但显然没有。复制和粘贴确实有效,因为复制只复制可见字符,回车不可见。您可以尝试
${DCD%?}
删除最后一个字符而不检查它;这是一种强硬的方法,但可能会奏效。
+ 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.
curl -k -v --silent -X GET https://xxx/v2/proj/image/manifests/latest/sha256:e8e9df98e780885012a05dc468fc5f60d30ce51062e09e1bc82f9644d20de9d9
* Illegal characters found in URL
* Closing connection -1