You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

bash中使用echo拼接URL变量时末尾变量出现在输出开头如何解决

异常原因

核心是latest_version变量末尾残留了回车符(\r,ASCII编码0x0D):

  • HTTP协议的响应头默认以\r\n作为换行分隔符,你通过curl获取响应头、用cut切割内容时,只过滤掉了换行符\n,把\r留在了latest_version的末尾
  • 终端输出时遇到\r会将光标复位到当前行的行首,后续拼接的/${FILENAME}内容就会从行首开始覆盖已经输出的前半段URL,最终呈现出FILENAME跑到开头的异常效果
解决方法

直接在获取latest_version的步骤中删除残留的\r即可,常用实现有两种:

  1. 管道追加tr命令直接删除所有回车符:
latest_version="$(curl -LIs "${REPO_URL}/releases/latest" | grep -i '^location:' | cut -d' ' -f2 | cut -d'/' -f8 | tr -d '\r')"
  1. 用bash原生参数替换清除变量末尾的回车符:
# 拿到原始变量后追加一行处理即可
latest_version=${latest_version%$'\r'}

你也可以执行od -c <<< "$latest_version"命令查看变量的原始字节,验证\r的存在。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:09:03