随着关于重定向shell流的所有问题和答案,我很惊讶我张贴我自己的一个,但我似乎无法找到任何东西类似的在线。外壳重定向:命令不会输出到标准输出或标准错误
为了简单描述我的情况,我正在尝试编写一个bash脚本,它将运行特定的二进制应用程序并监视特定字符串的输出,以便它可以对它们起作用。
我能够通过测试脚本来实现所需的功能,该测试脚本支持我的二进制应用程序。然而,当对真实的东西跑,它似乎并没有捕获所有的输出。当我独自运行的二进制应用程序,它输出这样
status OK
something A
something B
...
something Z
status OK
something A
但是,当我尝试将此输出重定向进行分析,我只得到了“状态OK”线。中间所有的好东西都没有。即使我尝试使用>将其重定向到文件,情况也是如此。起初我认为它可能会在标准输出上放置“状态”,在标准输出上放置“某些东西”,但似乎并非如此。
如果这个应用程序能够输出东西到终端,我可以读取,我怎么不能捕获它?有没有可能格式化是奇怪的,以至于它被终端显示器正确解释,但不知何故,不通过任何类型的重定向?
任何有识之士将不胜感激!
请看看[如何创建最小,完整和可验证的示例](http://stackoverflow.com/help/mcve)。将您的代码添加到您的问题。 – Cyrus
这真的取决于二进制应用程序在做什么。它可能会将输出发送到/ dev/tty。它可能会检查标准输出和/或标准错误以查看它们是否是终端设备。它可能...几乎可以做任何事情。 –
@Cyrus由于法律原因,我无法发布确切的代码,但是,重要的细节隐藏在二进制应用程序中,我没有源代码。我的问题主要是了解应用程序可以通过>或2>方式将文本输出到终端的可能方式。但是,我知道这是一个相当开放的问题。 – Matt