是否可以编写运行python应用程序的bash脚本,直到应用程序的输出显示指定的术语然后关闭应用程序?
编辑: 输出如下:
const Http = require('http');
const Shot = require('shot');
(function () {
const dispatch = function (req, res) {
const reply = 'Hello World';
res.writeHead(200, {
'Content-Type': 'text/plain',
'Content-Length': reply.length
});
res.end(reply);
};
const server = Http.createServer(dispatch);
Shot.inject(dispatch, { method: 'get', url: '/api/hello' }, (res) => {
console.log(res.payload);
});
})()
在SUCCESS出现后它应该关闭。
答案 0 :(得分:2)
假设你有以下Python程序:
#!/usr/bin/python
for i in range(0,5001):
print(i)
您可以在输出2500
时终止它:
stdbuf -oL python a.py | sed '/2500/q'
注意,这有点脏,你可能会收到一个
Traceback (most recent call last):
File "a.py", line 2, in <module>
print(i)
BrokenPipeError: [Errno 32] Broken pipe
但是如果你想杀死这个节目......
重要提示:
如果脚本正在写入stderr(默认情况下为logging.StreamHandler),或者它正在处理BrokenPipeError,那么这不会起作用。前者可以很容易地修复|&amp;重定向,但在后一种情况下,kill -INT会更好。