Command line 交互式lua:命令行参数
我想做Command line 交互式lua:命令行参数,command-line,lua,interactive,Command Line,Lua,Interactive,我想做 lua prog.lua arg1 arg2 从命令行 例如,在prog.lua中,我想说 print (arg1, arg2, '\n') Lua似乎没有argv[1]等,我所看到的处理命令行参数的方法似乎不成熟和/或繁琐。我错过什么了吗 您缺少了arg向量,该向量包含您想要在arg[1]、arg[2]中使用的元素,依此类推: % lua -i -- /dev/null one two three Lua 5.1.3 Copyright (C) 1994-2008 Lua.or
lua prog.lua arg1 arg2
从命令行
例如,在prog.lua中,我想说
print (arg1, arg2, '\n')
Lua似乎没有argv[1]等,我所看到的处理命令行参数的方法似乎不成熟和/或繁琐。我错过什么了吗 您缺少了
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
>
(感谢里程!)中的更多信息。除了
arg
表之外,..
还包含用于调用脚本的参数(arg[1]及以上)
% lua -i -- /dev/null one two three
Lua 5.1.3 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> print(...)
one two three
%lua-i--/dev/null一二三
Lua 5.1.3版权所有(C)1994-2008 Lua.org,临市局里约
>打印(…)
123
Lua将参数存储在表中。此表是“arg”表。您可以使用arg[1]、arg[2]、
arg[0]是lua程序的名称。arg[1]是传递的第一个参数,arg[2]是传递的第二个参数,依此类推…如果在freeswitch的cmd中运行file.lua
freeswitch> luarun prog.lua arg1
您可以使用prog.lua:
#print(argv[1])
并运行:$lua prog.lua arg1
(在脚本文件夹中运行)
您可以使用prong.lua:
#print(arg[1])
对于OP和未来的访客 Lua库不包含从命令行开关将表“args”注入全局的
。然而,从lua.c
构建的程序几乎无法使用。它无法使用的原因是程序不喜欢多个开关
这就是我的REPL/code executorluaconole
被构建的原因之一。它为您提供表args
,并向根pcall函数发送一个元组(您的执行环境实际上是一个顶级pcall,可能附加了一个错误处理程序)。所以args[n]
和locala={…};a[n]代码>使用任意数量的开关都能正常工作。例如,-e执行cmd行中的代码,-l指定库等。它支持lua51及以上的任何内容
如果你对图书馆里的程序有问题,我强烈建议你去看看,因为这会让你省去处理一个坏掉的感觉程序的头疼。还有其他的选择,比如web、fengari
希望这对你有帮助 你完全正确,我是!手册上的那个在哪里?我找不到很好的解决办法。干杯谢谢你的回答!我在Lua5.2.4上尝试了lua-I--1230
,但发现无法打开一个:没有这样的文件或目录
。这让我觉得需要/dev/null
(根据手册中的[script[args]]
,而不是[script][args]
)——我理解正确吗?如果你不反对,我会更新答案来解释。非常感谢@cxw re:/dev/null是必需的
您可以将任何lua脚本路径放在那里/dev/null
只是意味着在进入交互模式之前没有脚本可以运行。我很好奇您看到了什么“不成熟/繁琐”的解决方案来解决这样的问题。与内置的argc、argv相比似乎很麻烦;getopt(在我的机器上的C:/Program Files/Lua/5.1/docs/stdlib/getopt.html上)是一个需要编写的文件,广告示例是空白的。感谢您提供arg手册的指针。谷歌为我所做的并不像为你所做的那样,我一直在到处寻找答案。这也是作为一个n00b的原因之一——最简单的事情似乎不起作用:-(如何定义自己的表名而不是“arg”?