我有一些 shell 脚本,它们将一些消息打印到标准输出,如果输出与某些正则表达式匹配,我想生成一些其他进程,我可能还想挂起 shell 一段时间,直到其他进程提供一些反馈。我的要求基本上表现得像 shell 中的管道和 tcl expect,或 python 中的 pexpect,我的问题是,lua 是否提供这样的功能?
我考虑过一点 lua 的协程,但它不能在执行 shell 脚本的过程中产生,所以我没有深入研究。
最佳答案
遗憾的是,Lua 不提供开箱即用的管道支持,因此您必须在读取和写入之间做出选择。您可以获得的最接近的方法是遍历 :lines()
的 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通过 posix.pipe()
为 pipe()
提供接口(interface)
但是,请记住,Lua 可能不是最适合这项工作的工具。恕我直言,您最好使用 TCL 或 Python,甚至是 bash 脚本。
关于lua - 什么 lua 功能可以用作 python 或 tcl expect 中的 pexpect?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22092887/