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

Unix系统如何将两个命令输出拼接为同一行追加写入文件

问题原因

你之前写的命令存在两个问题:

  • echo 'File_Checksum:' >> test.txt 执行时会自动在字符串末尾加换行符,直接把前缀单独占一行写入文件
  • 管道符|只会传递前序命令的标准输出,你这里前序echo的输出已经被>>重定向到文件了,根本不会传递给后面的md5sum命令,本质是两个独立的追加写操作,自然会分成两行。
可行实现方案

你可以选下面任意一种写法实现需求:

方案1:命令替换拼接(最直观)

直接在echo里通过命令替换拿到校验值,拼成一整行再写入:

echo "File_Checksum: $(md5sum test1.txt | cut -f 1 -d ' ')" >> test.txt

$(...)语法会先执行括号内的md5计算、截取校验值逻辑,把返回结果和前缀拼成完整的单行字符串后再追加到目标文件,不会出现换行问题。

方案2:awk直接拼接(效率更高)

不需要额外调用cut命令,直接用awk处理md5sum的输出拼接前缀:

md5sum test1.txt | awk '{print "File_Checksum: " $1}' >> test.txt

md5sum输出的第一列就是MD5校验值,awk直接拼接前缀后打印整行即可,写法更简洁。

方案3:无换行echo拼接(兼容写法)

如果要沿用先写前缀再写校验值的逻辑,给echo加-n参数取消自动追加末尾换行即可,记得最后补个换行保证文件格式正常:

echo -n "File_Checksum: " >> test.txt && md5sum test1.txt | cut -f 1 -d " " >> test.txt && echo "" >> test.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:33:21