首页 > 解决方案 > 在过滤输出时执行另一个命令

问题描述

我有一个二进制文件foo,我将其包装在一个foo.shshell 脚本中以进行一些设置。我的包装脚本的最后一行是:

exec foo "$@"

这很好用。foo接管我的 tty 并运行,就好像它最初被调用而不是foo.sh.

现在,我想做和今天一样的所有事情,但是grepfoo's 的输出中删除一些行(它变得越来越冗长)。如果我像这样运行它:

foo "$@" | grep -v "filtered"

然后foo现在会认为它不在交互模式下,并开始表现与以前不同。我的意思是,这是正确的,它的输出不再是终端,但最终它会在终端中结束,所以我希望它有这种感觉。

有没有一种很好的便携方式来完成这种过滤?我不知道是否grep需要更改或调用foo是否需要更改。

(如果需要上下文,foo在我的示例中是 isbazelfoo.shis tools/bazel)。

标签: bashshellstdoutbazeltty

解决方案


推荐阅读