【问题标题】:Why redirect in UNIX bash script loses prints为什么在 UNIX bash 脚本中重定向会丢失打印
【发布时间】:2013-04-22 22:10:06
【问题描述】:

我有一个简单的 bash 脚本,它执行一个程序并重定向来自文件的每个输入并将标准输出的每个输出重定向到一个文件中。

当我在没有标准输出重定向的情况下执行它时,它会以正确的顺序在终端中打印我程序的每个 printf。当我将标准输出重定向时,它似乎会丢失其中的一些并造成它们的顺序混乱。

#!/bin/bash
./myprog < commands > scriptOUT.txt

其中 myprog 是程序的可执行文件 commands 是一个文件,其中包含该程序执行所需的输入,而 scriptOUT.txt 是将要创建的文件,最后包含所有标准输出(这根本不会发生)

为什么会这样?有没有办法解决它?

【问题讨论】:

  • 会不会是其中一些被发送到 STDERR 而不是 STDOUT?
  • ./myprog 使用线程吗?
  • 它在 STDERR 中只打印一次。不,它不使用线程。

标签: c bash unix


【解决方案1】:

您的某些输出是否会发送到stderrstdout?尝试使用&gt;&amp; 重定向stdoutstderr,看看是否有帮助:

#!/bin/bash
./myprog < commands >& scriptOUT.txt

【讨论】:

  • 你确定是&gt;&amp;?据我所知是&amp;&gt;
  • 可以是&gt;&amp;&amp;&gt;;我相信 Bash 手册推荐&amp;&gt;
  • 无论哪种方式都没有任何区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-28
  • 2014-10-31
  • 2018-09-26
  • 2021-10-09
  • 1970-01-01
  • 2014-01-04
  • 2016-08-03
相关资源
最近更新 更多