首页 > 解决方案 > 通过 xargs 调用时使用 curl 下载文件失败

问题描述

我正在使用 curl 从Artifactory下载文件。我在使用MSYS2的 Windows 10 上。

curl --version
curl 7.68.0 (x86_64-pc-msys) libcurl/7.68.0 OpenSSL/1.1.1d zlib/1.2.11 brotli/1.0.7 libidn2/2.3.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh2/1.9.0 nghttp2/1.40.0
Release-Date: 2020-01-08
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS brotli Debug GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz Metalink NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP TrackMemory UnixSockets
xargs --version
xargs (GNU findutils) 4.7.0
...

which xargs
xargs is an external : C:\msys64\usr\bin\xargs.exe

这是我的命令:

curl "http://artifactory.xxx.xxx.com:8080/artifactory/api/storage/generic-tools/xxx-xxx/?lastModified" | jq .uri | xargs curl

curl 下载 json 文件,jq提取包含库信息的 json 文件的 url。然而,第二个 curl 调用失败:

curl: (3) URL 使用错误/非法格式或缺少 URL

更改 xargs 命令以xargs echo curl提供预期的输出。在命令行上运行此调试输出时,会下载正确的文件而不会出现任何错误。

我还可以创建一个可以下载 json 文件的配置文件:

echo.|set /P =URL =  > latest.txt
curl ... | jq .uri >> latest.txt
curl --config latest.txt

为什么管道 xargs 命令不起作用,但命令行命令以及配置文件选项工作正常?

标签: curljqxargsmsys2

解决方案


推荐阅读