我是linux shell的新手,我正在尝试这样做,最好是在一行中,具有以下条件:它无法向终端输出任何内容。
/var/folder/program.exe -L parameters | grep text_to_filter && echo SomeText >'/tmp/Log.txt'
问题是.exe向终端吐出XML数据。我无法弄清楚如何grep它而没有shell输出它。如果我使用/dev/null 2>&1
,它会很好地管理它,但我不能grep数据。有什么想法吗?
答案 0 :(得分:9)
使用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选项。
答案 1 :(得分:0)
尝试使用|&而不仅仅是。 (需要bash 4)