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

如何在Bash中输出包含变量且前后含大量空格的指定格式字符串?

Bash输出带变量的格式化字符串异常解决方法

问题原因

变量v从version.json读取内容时,可能包含了不可见的控制字符(比如Windows格式文件的回车符\r、多余的换行符),这些字符会干扰终端输出排版,导致出现前管道前有空格、字符错位、最后管道换行的异常。

解决步骤

  1. 清理变量中的控制字符
    读取文件内容时直接过滤掉换行和回车符:

    # 方法1:用tr删除所有换行和回车
    v=$(tr -d '\r\n' < version.json)
    # 方法2:用sed去掉行尾回车并删除空行
    v=$(sed -e 's/\r$//' -e '/^$/d' version.json)
    
  2. 验证变量内容
    执行以下命令查看变量中的不可见字符,确认是否存在^M(对应\r)或换行:

    echo "$v" | cat -A
    
  3. 正确输出格式化字符串
    用双引号包裹输出内容(确保变量被解析),同时变量已清理干净:

    echo "|                        BLAH v${v}                          |"
    

补充说明

  • 最初的单引号写法echo '| ... ${v} ... |'不会解析变量,输出的是字面量${v},不符合需求。
  • 后续的双引号写法本身逻辑正确,但变量中的控制字符是导致格式异常的核心原因。

内容的提问来源于stack exchange,提问作者J. Scott Elblein

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:15:34