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

为何Bash脚本使用重定向符号>仍无法输出内容到results.foo?

问题原因

你脚本里的cmd 2> results.foo > results.foo写法存在错误——Bash会分别处理这两个重定向,两次打开并截断results.foo文件。当第一个重定向(无论>还是2>)打开文件时,文件会被清空;第二个重定向再次打开同一文件时,又会执行一次清空操作,最终导致两个流的输出互相覆盖,或因文件指针冲突,最终没有内容留存。

解决方法

要同时捕获标准输出和标准错误到同一个文件,使用以下两种正确写法之一:

  1. 使用Bash专属的合并重定向符号&>:
cmd &> results.foo
  1. 使用POSIX兼容的标准写法,先重定向标准输出到文件,再将标准错误重定向到标准输出的位置:
cmd > results.foo 2>&1

这两种写法都会让标准输出和标准错误正常写入results.foo,不会出现文件被重复截断的问题。

另外可以先单独执行cmd,确认该命令本身是否有输出(包括标准输出和错误输出),排除cmd自身无输出导致文件为空的可能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:50:30