当我在 Lua 中执行“os.execute”时,控制台会快速弹出,执行命令,然后关闭。但是有没有办法只使用标准 Lua 库来取回控制台输出?
Drealmer
问问题
46873 次
3 回答
71
如果你有 io.popen,那么这就是我使用的:
函数 os.capture(cmd, raw) 本地 f = 断言(io.popen(cmd,'r')) 本地 s = assert(f:read('*a')) f:关闭() 如果原始则返回 s 结束 s = string.gsub(s, '^%s+', '') s = string.gsub(s, '%s+$', '') s = string.gsub(s, '[\n\r]+', ' ') 返回 结尾
如果您没有 io.popen,那么您的系统上可能没有 popen(3),并且您处于深酸奶中。但是所有的 unix/mac/windows Lua 端口都会有 io.popen。
(gsub
业务去掉前导和尾随空格并将换行符转换为空格,这大致是 shell 对其$(...)
语法所做的。)
于 2008-11-28T21:19:22.327 回答
28
我想你想要这个http://pgl.yoyo.org/luai/i/io.popen io.popen。但它并不总是被编译进去。
于 2008-09-27T08:56:01.633 回答
1
我不具体了解 Lua,但您通常可以运行以下命令:
comd >comd.txt 2>&1
将输出和错误捕获到文件 comd.txt,然后使用语言文件 I/O 函数将其读入。
如果语言本身不提供捕获标准输出和错误,我会这样做。
于 2008-09-25T10:11:05.397 回答