我有一些 shell 脚本,它们将一些消息打印到 stdout,并且如果输出与某些正则表达式匹配,我想生成一些其他进程,我可能还想将 shell 挂起一段时间,直到其他进程给出一些反馈。我的要求基本上表现得像shell中的pipe和tclexpect,或者python中的pexpect,我的问题是,lua是否提供这样的功能?
我考虑过一点lua的协程,但它在执行shell脚本的过程中不能产生结果,所以我没有挖掘。
遗憾的是,Lua 不提供开箱即用的管道支持,因此您必须在读取和写入之间进行选择。您可以获得的最接近的是通过迭代:lines() of a io.popen()编辑过程:
for line in io.popen('/some/other/process'):lines() do
-- previous line will block until output is available
if line:match '^some regex' then
-- match found! do some stuff
end
end -- EOF reached
如果您有权访问 C 模块,luaposix提供一个接口pipe()
throughposix.pipe()
然而,请记住 Lua 可能不是最适合这项工作的工具。恕我直言,您最好使用 TCL 或 Python,甚至 bash 脚本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)