如下模式的一行命令
<command1>| grep blahblah | <command2>
grep 匹配到结果则执行,如果 grep 结束前没匹配到结果则 C2 不执行
比如用 strace -etrace=open 去跟踪特定文件的创建,在该文件创建时执行一个命令。
google 出一个方法是用 xargs -r,但是在 grep 出的结果有一堆空格的情况下要保证 C2 只执行一次还挺麻烦的,毕竟管道过来的内容只是当作一个信号来用,其内容没什么意义。感觉这个 C2 应该是必须要通过类似 xargs 这样的命令间接调用,想知道有没有更好的方法?
1
exip 2019-02-05 09:03:27 +08:00 via Android
你需要的不是|需要&
|
2
huskar 2019-02-05 10:45:06 +08:00 via Android
if cmd1|grep xxx
then cmd2 fi |
3
YenvY OP |
6
pkookp8 2019-02-05 12:47:34 +08:00 via Android
a=`cmd1 | grep` &
while true;do if $a;then cmd2;fi;done |
8
Beebird 2019-02-05 14:16:59 +08:00 via Android
C1 | grep xxxxx && C2
若 C1 | grep xxxxx 的 return code 不为 0,则不执行 C2 |