Bash脚本。在输出到文件的脚本中隐藏一个特定命令的输出

时间:2011-11-23 05:21:18

标签: bash grep nested pipe

我的这个剧本正在慢慢变大。它的输出通过管道传递到调用文件(后来用于构建电子邮件正文),但是,我有一个特殊的命令在该脚本中调用,其输出我想减少。

我正在尝试

./somecommand | egrep "pattern1|pattern2"

在常规控制台窗口中可以正常工作,但是当我悄悄进入我的大脚本时,管道到egrep会被忽略,而“./somecommand”的整个输出都会出现在父脚本的输出中。

如何解决?

我保持这个问题模糊,以避免复制粘贴整个该死的东西。可根据要求提供更多信息。是的,脚本中的脚本中的脚本,我们需要更深入,等等。我最多可以处理五个脚本,从而处理不同的任务,作为更大的多服务器备份操作的一部分。主操作脚本输出到构建电子邮件正文的文本文件,这用作最终用户看到的日志记录。我在主脚本中调用的一个特定脚本非常“嘈杂”,因此egrep只获取与用户相关的输出。

谢谢大家!

3 个答案:

答案 0 :(得分:1)

是否有可能./somecommand将其输出发送到stderr而不是stdout?你可以尝试:

./somecommand 2>&1 | egrep "pattern1|pattern2"

答案 1 :(得分:0)

您是否尝试过grep -v选项?您是否获得了somecommand文件中所有脚本的单行输出?如果是这样,那么你可以使用grep -v“pattern”

答案 2 :(得分:0)

您可以尝试在调试模式下运行脚本,如下所示:

bash -x ./script