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

执行sed -e命令后得到空文件,原因是什么?

问题原因

你脚本里的错误在于sed -e "s:@NAME@:${name}:g"这行末尾多了一个管道符|。管道符的作用是将前一个命令的输出作为后一个命令的输入,但你在这个管道符后面直接写了重定向>> "${full_file}",没有对应的命令接收前序输出,导致sed处理后的内容被丢弃,最终${full_file}为空。

修正后的脚本

把多余的管道符删掉即可:

name="Alin"
full_file="$(mktemp)"
cat file | \
    sed -e "s:@NAME@:${name}:g" \
    >> "${full_file}"

cat "${full_file}"

另外,也可以简化写法,去掉不必要的cat,直接让sed读取file:

name="Alin"
full_file="$(mktemp)"
sed -e "s:@NAME@:${name}:g" file >> "${full_file}"

cat "${full_file}"

执行修正后的脚本,${full_file}里就会得到你期望的内容:

my name is: Alin

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:02:24