交互式 Lua:命令行参数
我希望通过命令行运行以下命令:
lua prog.lua arg1 arg2
在 prog.lua 文件中,我想这样说:
print (arg1, arg2, '\n')
Lua 似乎没有 argv [1] 等等,并且我见过的处理命令行参数的方法似乎都不太完善和 / 或过于繁琐。我错过了什么吗?
原文链接 https://stackoverflow.com/questions/2945819
除了arg
表之外,...
还包含用于调用脚本的参数(arg[1]
及以上)。
%lua -i -- / dev / null一个二三
Lua 5.1.3 版权所有(C)1994-2008 Lua.org,PUC-Rio
> print(...)
一个 二 三
Lua将参数存储在表中。这个表被称为“arg”表。您可以使用arg[1]、arg[2]等来访问传递的参数。
arg[0]是Lua程序的名称。arg[1]是第一个传递的参数,arg[2]是第二个传递的参数,依此类推...
如果在 freeswitch
的命令行中运行 file.lua
,
freeswitch> luarun prog.lua arg1
你可以使用 prog.lua
:
#print(argv[1])
然后运行: $lua prog.lua arg1
(在脚本文件夹中运行)
你可以使用 prong
:
#print(arg[1])
对于问题提出者和未来的访客,
Lua 库中没有包含“将一个表 'args' 从命令行开关注入到全局变量”功能。然而,从 lua.c
构建的程序有,但是它几乎不可能使用。理由在于程序不支持多个开关。
这是我创建 REPL/代码执行器 LuaConsole
的原因之一。它会为你提供表 args
,并向根 pcall
函数发送一个元组(你的执行环境实际上是带有一个错误处理程序的顶级 pcall
)。所以,args[n]
和 local a = {...}; a[n] ...;
都可以与你想要的任意数量的开关一起正常工作。例如,-e 用于从命令行执行代码,-l 用于指定库等。它支持所有 lua51 及以上的版本。
如果你在使用库中的程序时遇到问题,我强烈建议你检查一下 https://www.github.com/tilkinsc/LuaConsole,因为它将可以帮你避免与一个不太完美的程序打交道的烦恼。还有其他可供选择的替代方案,例如用于 Web 的 fengari。
希望这对你有所帮助!
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
你没有包含
arg
向量,其中包含了你想要的arg[1]
、arg[2]
等等内容:% lua -i -- /dev/null one two three Lua 5.1.3 Copyright (C) 1994-2008 Lua.org, PUC-Rio > print(arg[2]) two >
更多信息请参考Lua 手册上的 Lua 独立运行章节(感谢 Miles!)。