在Lua中获取os.execute的输出

时间:2008-09-25 09:53:27

标签: lua

当我在Lua中执行“os.execute”时,控制台会快速弹出,执行命令,然后关闭。但是有没有办法只使用标准的Lua库来获取控制台输出?

3 个答案:

答案 0 :(得分:55)

如果您有io.popen,那么这就是我使用的:

function os.capture(cmd, raw)
  local f = assert(io.popen(cmd, 'r'))
  local s = assert(f:read('*a'))
  f:close()
  if raw then return s end
  s = string.gsub(s, '^%s+', '')
  s = string.gsub(s, '%s+$', '')
  s = string.gsub(s, '[\n\r]+', ' ')
  return s
end

如果您没有io.popen,那么您的系统可能无法使用popen(3),并且您正在使用深酸奶。但是所有unix / mac / windows Lua端口都有io.popen。

答案 1 :(得分:25)

我想你想要http://pgl.yoyo.org/luai/i/io.popen io.popen。但它并不总是在编译中。

答案 2 :(得分:-1)

我不知道Lua具体但你通常可以运行命令:

comd >comd.txt 2>&1

将输出和错误捕获到文件comd.txt,然后使用语言文件I / O函数读取它。

如果语言本身没有提供捕获标准输出和错误的话,我就是这样做的。