如何在Bash中输出包含变量且前后含大量空格的指定格式字符串?
Bash输出带变量的格式化字符串异常解决方法
问题原因
变量v从version.json读取内容时,可能包含了不可见的控制字符(比如Windows格式文件的回车符\r、多余的换行符),这些字符会干扰终端输出排版,导致出现前管道前有空格、字符错位、最后管道换行的异常。
解决步骤
清理变量中的控制字符
读取文件内容时直接过滤掉换行和回车符:# 方法1:用tr删除所有换行和回车 v=$(tr -d '\r\n' < version.json) # 方法2:用sed去掉行尾回车并删除空行 v=$(sed -e 's/\r$//' -e '/^$/d' version.json)验证变量内容
执行以下命令查看变量中的不可见字符,确认是否存在^M(对应\r)或换行:echo "$v" | cat -A正确输出格式化字符串
用双引号包裹输出内容(确保变量被解析),同时变量已清理干净:echo "| BLAH v${v} |"
补充说明
- 最初的单引号写法
echo '| ... ${v} ... |'不会解析变量,输出的是字面量${v},不符合需求。 - 后续的双引号写法本身逻辑正确,但变量中的控制字符是导致格式异常的核心原因。
内容的提问来源于stack exchange,提问作者J. Scott Elblein
相关产品推荐
相关产品推荐

