将脚本的输出添加到lua中的数字

时间:2015-08-18 19:28:04

标签: lua

我在Linux中有一个输出10的shell脚本。

我想在lua中编写一个脚本,它为我的shell脚本输出添加了5。如何使用shell脚本的输出?

这是我试过的 -

print(5 + tonumber(os.execute('./sample')))

这是输出 -

10
lua: temp.lua:2: bad argument #2 to 'tonumber' (number expected, got string)
stack traceback:
    [C]: in function 'tonumber'
    temp.lua:2: in main chunk
    [C]: in ?

1 个答案:

答案 0 :(得分:4)

正如@Etan Reisner所说,os.execute返回多个值,但退出代码不是第一个返回值。因此,您必须将值填充到变量中:

local ok, reason, exitcode = os.execute("./sample")
if ok and reason == "exit" then
    print(5 + exitcode)
else
    -- The process failed or was terminated by a signal
end

顺便说一句,如果你想将新值作为退出代码返回,你可以使用os.exit来实现:

os.exit(5 + exitcode)

编辑:正如您通过评论澄清的那样,您希望阅读流程的输出(标准输出),而不是返回值。在这种情况下,io.popen是您需要的功能:

local file = io.popen("./sample")
local value = file:read("*a")
print(5 + tonumber(value))

但请注意,io.popen为not available on every plattform