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
相关产品推荐
相关产品推荐

