什么lua功能可以用作python中的pexpect或tcl期望?

时间:2014-02-28 10:45:28

标签: lua expect

我有一些shell脚本那些打印一些消息到stdout,我想产生一些其他进程如果输出匹配一些正则表达式,我可能也想挂起一段时间的shell,直到其他进程给一些反馈。我的要求基本上像shell中的管道和tcl期望,或python中的pexpect,我的问题是,lua是否提供这样的功能?

我已经考虑了一点lua的协程,但它在执行shell脚本的过程中无法产生,所以我没有挖掘。

1 个答案:

答案 0 :(得分:3)

可悲的是,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提供了pipe()posix.pipe()的接口

但是,请记住,Lua可能不是最合适的工具。恕我直言,你最好使用TCL或Python,甚至是bash脚本。