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

如何在将stdout通过管道传递时仅捕获stderr到变量?

仅捕获stderr到变量,同时让stdout正常通过管道传递

我需要实现:仅将命令的stderr输出捕获到变量中,同时让stdout像往常一样通过管道传递给其他命令,理想情况下不使用临时文件。

我已经尝试过以下方法,但都存在问题:

  • 使用_output="$(cat "$_filename" 2>&1)"可以把命令的所有输出(stdout+stderr)捕获到变量里,但处理大文件时可能无法正常工作,且不符合我只捕获stderr的需求。
  • 尝试用进程替换给变量赋值,但子shell中的赋值无法生效:
    cat file.txt > >(cat) 2> >(_output="$(cat 2>&1)")
    
  • 下面的方法能处理stderr输出,但无法将错误内容存入变量,灵活性不足:
    cat file.txt > >(cat) 2> >(sed 's/^cat: /error: /' >&2)
    echo "The quick brown" | cat > >(cat) 2> >(sed 's/^cat: /error: /')
    
  • 用tee将错误输出写入日志文件是可行的,但这并非我想要的理想方案。

内容的提问来源于stack exchange,提问作者Mike T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 00:22:26