Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Command line 交互式lua:命令行参数_Command Line_Lua_Interactive - Fatal编程技术网

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 executor
luaconole
被构建的原因之一。它为您提供表
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”?