You need to enable JavaScript to run this app. Windows MSYS2环境下通过xargs调用curl下载Artifactory文件失败求助
优惠活动
大模型
产品
解决方案
定价
更多

Windows MSYS2环境下通过xargs调用curl下载Artifactory文件失败求助

问题原因

这是MSYS2环境下换行符格式和jq输出格式共同导致的问题,具体原因如下:

  • jq .uri 默认会给提取到的字符串外层包裹双引号,同时输出的行尾换行符是Windows风格的CRLF(\r\n),而非Linux风格的LF(\n)
  • 管道传给xargs时,xargs会将行尾的回车符(\r)识别为URI的一部分,最终传给curl的URL末尾带有不可见的\r字符,因此curl判定URL格式非法报错
  • 你用xargs echo curl调试时,echo命令输出时会自动忽略不可见的\r字符,你复制内容到命令行执行时,系统也会自动过滤控制字符,因此直接执行可以成功。而配置文件模式下curl会自行处理行尾换行和引号规则,因此也能正常工作。

解决办法

你可以选择以下任意一种方案修复命令:

  • 方案1:给jq添加-r参数输出无引号的原始字符串,同时用tr命令删除回车符
curl "http://artifactory.xxx.xxx.com:8080/artifactory/api/storage/generic-tools/xxx-xxx/?lastModified" | jq -r .uri | tr -d '\r' | xargs curl
  • 方案2:指定xargs的分隔符为换行符,自动忽略回车符
curl "http://artifactory.xxx.xxx.com:8080/artifactory/api/storage/generic-tools/xxx-xxx/?lastModified" | jq -r .uri | xargs -d '\n' curl
  • 方案3:使用命令替换替代xargs,避免换行符处理问题
curl $(curl "http://artifactory.xxx.xxx.com:8080/artifactory/api/storage/generic-tools/xxx-xxx/?lastModified" | jq -r .uri)

内容的提问来源于stack exchange,提问作者Gerhard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 19:54:04