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

Debian 12中使用echo/printf执行部分命令时输出换行错位的问题求助

Debian 12中使用echo/printf执行部分命令时输出换行错位的问题求助

大家好,我在Debian 12稳定版里遇到了一个奇怪的问题,想请各位帮忙分析下:

有些命令用echo或者命令替换$()组合输出时,结果完全正常,标签和命令的版本信息能在同一行显示,比如:

echo "unzip  version: $(unzip -v | head -1)"
# 输出:unzip  version: UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.

echo "JQ version....: $(jq --version)"
# 输出:JQ version....: jq-1.6

但换成另一些工具,比如dig和ssmtp,用同样的方式输出就出问题了——命令的版本信息会单独占一行,还跑到了我写的标签前面,顺序完全乱了:

echo "dig version: $(dig -v)"
# 输出:
# DiG 9.18.28-1~deb12u2-Debian
# dig version:

printf "dig version%s\n" $(dig -v)
# 输出:
# DiG 9.18.28-1~deb12u2-Debian
# dig version

echo "SSMTP version: $(ssmtp -V)"
# 输出:
# sSMTP 2.64 (Not sendmail at all)
# SSMTP version:

我还试着把命令结果先存到变量里,结果也不管用——执行赋值命令的时候,直接就输出了dig的版本信息,变量里好像根本没捕获到内容:

DIG_VERSION="$(dig -v)"
# 执行后直接输出:DiG 9.18.28-1~deb12u2-Debian

有没有大佬知道这是怎么回事,该怎么解决呀?

备注:内容来源于stack exchange,提问作者Polymerase

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 10:47:56