首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当术语显示在bash中时终止终端应用程序

当术语显示在bash中时终止终端应用程序
EN

Stack Overflow用户
提问于 2017-11-11 21:01:40
回答 1查看 49关注 0票数 0

是否可以编写一个bash脚本来运行python应用程序,直到该应用程序的输出显示特定的术语,然后关闭该应用程序?

编辑:输出如下所示:

代码语言:javascript
复制
2017-11-11 14:21:27 LOG: 192.168.0.1 - Administrator:Test54
2017-11-11 14:21:28 LOG: 192.168.0.1 - Administrator:Test55
2017-11-11 14:21:29 LOG: 192.168.0.1 - Administrator:Test56
2017-11-11 14:21:30 LOG: 192.168.0.1 - Administrator:Test57
2017-11-11 14:21:31 LOG: 192.168.0.1 - Administrator:Test58
2017-11-11 14:21:32 LOG: 192.168.0.1 - Administrator:Test59
2017-11-11 14:21:33 LOG: 192.168.0.1 - Administrator:Test60
2017-11-11 14:21:34 LOG: 192.168.0.1 - Administrator:Test61
2017-11-11 14:21:35 LOG: 192.168.0.1 - Administrator:Test62
2017-11-11 14:21:35 SUCCESS : 192.168.0.1 - Administrator:Test62

它应该在成功出现后关闭。

EN

回答 1

Stack Overflow用户

发布于 2017-11-11 21:11:22

假设您有以下Python程序:

代码语言:javascript
复制
#!/usr/bin/python
for i in range(0,5001):
    print(i)

您可以在它输出2500时终止它,如下所示:

代码语言:javascript
复制
stdbuf -oL python a.py | sed '/2500/q'

注意,这有点脏,您可能会收到一个

代码语言:javascript
复制
Traceback (most recent call last):
  File "a.py", line 2, in <module>
    print(i)
BrokenPipeError: [Errno 32] Broken pipe

但如果你想杀了这个程序...

重要提示:

如果脚本正在向stderr写入(就像logging.StreamHandler在默认情况下那样),或者如果它正在处理BrokenPipeError,那么这将不起作用。前者可以通过|& redirection轻松修复,但在后一种情况下,kill -INT会工作得更好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47238161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档