解析Lua文件的参数
我有一个文件:data.lua解析Lua文件的参数,lua,Lua,我有一个文件:data.lua #! /usr/bin/env lua local a = { b = { c = { version = "z.y" }, d = { version = "z.w" }, getcversion = function ( self ) print( self.c.version ) e
#! /usr/bin/env lua
local a = {
b = {
c = {
version = "z.y"
},
d = {
version = "z.w"
},
getcversion = function ( self )
print( self.c.version )
end
}
}
现在我需要“getcversion()”函数
a.b:getcversion()
问题是,我需要从外面给它打电话:
data.lua "a.b:getcversion()"
我尽我所能,但我解决不了这个问题
有人知道我如何调用“getcversion()”吗
提前感谢,,
关于您需要在脚本中添加以下内容:
load(arg[1], "<string>", "t", {a = a})()
加载(arg[1]、“”、“t”、{a=a})()
load
将加载所传递参数的内容(arg[1]
),并返回将在特定环境中执行该代码的函数(作为{a=a}
表提供),因为您需要将局部变量的值传递给代码(Lua 5.2+)
请记住,这将允许调用方向脚本传递任意Lua代码,这可能是一个安全问题
错误处理留给读者作为练习。添加
在data.lua末尾返回一个,将其转换为一个模块,然后:
$ lua -e 'a = require("data"); print(a.b:getcversion())'
z.y
嗨,也许试试这个什么是“外面”?另一个Lua文件?外部是一个调用该文件的bash脚本:data.Lua“a.b:getcversion()”非常感谢您在这方面的帮助<代码>加载(chunk[,chunkname[,mode[,env]]])
这是问题的答案:)我现在将继续使用:load(arg[1]…“()”,arg[1]…”(),“t”,{a=a})(
。有了这个,我可以从bash调用,而无需转义括号“\(\)”,方法是:data.lua a.b:getcversion
感谢您的帮助!谢谢你的回复!还有一个解决方案,我当时并不知道:)