16

我是 linux shell 的新手,我正在尝试这样做,最好是在一行中,条件如下:它不能向终端输出任何东西。

/var/folder/program.exe -L parameters | grep text_to_filter && echo SomeText >'/tmp/Log.txt'

问题是 .exe 向终端吐出 XML 数据。我不知道如何 grep,使用退出状态,但屏幕上不会出现每个匹配项的输出混乱。如果我使用/dev/null 2>&1,它会完全管道化,但我无法 grep 数据。有任何想法吗?

4

2 回答 2

19

使用grep -q(安静)

/var/folder/program.exe -L parameters |
grep -q "text_to_filter" && echo 'SomeText' > '/tmp/Log.txt'

根据man grep

-q, --quiet, --silent 安静的; 不要向标准输出写入任何内容。如果找到任何匹配项,即使检测到错误,也会立即以零状态退出。另请参阅 -s 或 --no-messages 选项。

于 2013-11-07T16:53:36.823 回答
0

尝试使用 |& 而不仅仅是 |。(需要 bash 4)

于 2013-11-07T17:09:30.417 回答