Lua os.execute返回值

时间:2012-03-12 23:10:46

标签: lua shellexecute

是否可以从Lua中的局部变量中读取以下内容?

local t = os.execute("echo 'test'")
print(t)

我只想实现这一目标:无论通过ox.execute执行什么并且将返回任何值,我想在Lua中使用它 - 例如echo 'test'将输出test in bash命令行 - 是否可以将返回值(在这种情况下为test)获取到Lua局部变量?

4 个答案:

答案 0 :(得分:63)

您可以改用io.popen()。这将返回一个文件句柄,您可以使用该句柄来读取命令的输出。以下内容可能有效:

local handle = io.popen(command)
local result = handle:read("*a")
handle:close()

请注意,这将包括命令发出的尾部换行符(如果有)。

答案 1 :(得分:4)

function GetFiles(mask)
   local files = {}
   local tmpfile = '/tmp/stmp.txt'
   os.execute('ls -1 '..mask..' > '..tmpfile)
   local f = io.open(tmpfile)
   if not f then return files end  
   local k = 1
   for line in f:lines() do
      files[k] = line
      k = k + 1
   end
   f:close()
   return files
 end

答案 2 :(得分:-5)

Lua的os.capture返回所有标准输出,因此它将返回到该变量。

示例:

local result = os.capture("echo hallo")
print(result)

印刷:

hallo

答案 3 :(得分:-12)

对不起, 但这是不可能的。 如果echo programm成功退出,它将返回0.此返回码也是os.execute()函数获取并返回的内容。

if  0 == os.execute("echo 'test'") then 
    local t = "test"
end

这是一种获得你想要的东西的方式,我希望它可以帮到你。

获取函数返回码的另一个提示是Lua引用。 Lua-Reference/Tutorial