2010-05-31 55 views
26

我想在命令行互动LUA:命令行参数

里面prog.lua,我想说做

lua prog.lua arg1 arg2 

,例如

print (arg1, arg2, '\n') 

的Lua没有按”似乎有argv [1]等,我看到的处理命令行参数的方法似乎不成熟和/或繁琐。我错过了什么吗?

+1

我很好奇,你见过这样的[简单问题]什么是“不成熟的/笨重的”解决方案(http://www.google.com/search?q=lua+command+line+arguments&btnI=1)。 – Miles 2010-05-31 20:36:10

+2

http://lua-users.org/wiki/CommandLineModule看起来很麻烦,与内置的argc,argv相比; getopt的(在C:/ Program Files文件/ Lua中/ 5.1 /文档/ STDLIB /我的机器上getopt.html)是已TODO写了这一切,并通告的例子是空白。感谢指向arg手册的指针。谷歌并没有为我做它为你做的事,我一直在试图找出答案。这是约(再次)是一个的n00b的事情之一 - 最简单的事情似乎只是没有:-( – 2010-05-31 21:05:33

回答

42

你错过了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 manual section on Lua standalone更多信息。

+1

你是绝对正确的,我的工作 下落手册中的是我没有找到!? 。我的方式轮得很好ATM干杯 – 2010-05-31 20:34:26

+2

http://www.lua.org/manual/5.1/manual.html#6 – Miles 2010-05-31 20:41:56

+0

谢谢你的答案,我试过'LUA -i - !一二three'上LUA 5.2.4,并得到'无法打开一个:没有这样的文件或directory'这让我觉得需要对'的/ dev/null'(每'[脚本[参数]'手册中,不'[脚本] [。 args]')---我理解正确吗?如果你不反对,我会更新答案解释。非常感谢! – cxw 2017-11-20 14:55:53

23

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 
5

Lua将参数存储在表中。该表是“arg”表。您可以访问内部使用ARG [1],阿根廷[2],...

ARG [0]是LUA程序的名称传递的参数。 ARG [1]是传递的第一个参数arg [2]是传递的第二个参数等等...

2

如果您在FreeSWITCH中的CMD运行file.lua

freeswitch> luarun prog.lua arg1 

您可以使用PROG .lua:

#print(argv[1]) 

并运行:$lua prog.lua arg1(在脚本文件夹中运行) 您可以使用prong.lua:

#print(arg[1])