2016-11-23 39 views
1

退出基于输出运行指令I有一个方法,该方法我开始运行使用在bash

$ somecommand build

它基本上安装在Android仿真器的应用,然后启动仿真器。这个过程一直运行,直到我手动杀死它。

该命令在运行应用程序时还向终端输出一堆调试信息。我想在这个连续输出的某个地方杀死命令,字符串[TESTS_ENDED]已经在终端上输出。

任何oneliner上如何做到这一点?

+0

退房这个问题被杀害:http://superuser.com/q/402979/4706并专门'grep的-m'回答: http://superuser.com/a/403041/4706 – orip

+0

我喜欢'grep -m'解决方案,但是我的脚本现在不输出任何东西, 并且抛出一个未处理的异常,因为它的一些npm模块正在运行。 任何方式仍然输出到终端,直到找到匹配? 作为一个额外的要求,如果我可以选择'[TESTS_STARTED]'和'[TESTS_ENDED]'之间的文本并且只输出该文件(仍然会在[TESTS_ENDED]''' – Flame

回答

0

使用awk,以帮助从pkill

somecommand build | awk '/\[TESTS_ENDED\]/ {system("pkill somecommand")}' 
  • 假设somecommand只有一个实例是捉迷藏

  • \[TESTS_ENDED\]比赛[TESTS_ENDED]在该行

  • 如果匹配,{system("pkill somecommand")}将会运行即awk将使用system()函数运行pkill somecommandsomecommandpkill

+0

'真的很喜欢这个解决方案,它假设一个实例。如果你可以引用正在管理的实例 – Flame