2010-05-31 21 views
26

que desean hacerlua interactivos: los argumentos de línea de comando

lua prog.lua arg1 arg2 

desde la línea de comandos

Dentro prog.lua, quiero decir, por ejemplo

print (arg1, arg2, '\n') 

Lua doesn' Parece que tiene argv [1] etc. y los métodos que he visto para tratar con los argumentos de la línea de comando parecen inmaduros y/o engorrosos. ¿Me estoy perdiendo de algo?

+1

Tengo curiosidad por las soluciones "inmaduras/engorrosas" que ha visto a un [problema directo] (http://www.google.com/search?q=lua+command+line+arguments&btnI=1). – Miles

+2

http://lua-users.org/wiki/CommandLineModule parece engorroso en comparación con un built-in argc, argv; getopt (en C:/Archivos de programa/Lua/5.1/docs/stdlib/getopt.html en mi máquina) tiene TODO escrito por completo y el ejemplo anunciado está en blanco. Gracias por el puntero al manual de arg. Google no hizo por mí lo que hizo por ti, he estado por todas partes tratando de descubrir esto. Es una de las cosas sobre ser un n00b (otra vez) - las cosas más simples simplemente no parecen funcionar :-( –

Respuesta

42

Te estás perdiendo el vector arg, que tiene los elementos que desee en arg[1], arg[2], y así sucesivamente: (gracias Millas)

% lua -i -- /dev/null one two three 
Lua 5.1.3 Copyright (C) 1994-2008 Lua.org, PUC-Rio 
> print(arg[2]) 
two 
> 

Más información en la Lua manual section on Lua standalone.

+1

¡Tienes toda la razón, lo estoy! ¿Qué sucede en el manual? No lo estoy encontrando mi camino a su alrededor muy bien cajero automático. Saludos –

+2

http://www.lua.org/manual/5.1/manual.html#6 – Miles

+0

Gracias por la respuesta! Intenté 'lua -i - uno dos tres' en lua 5.2.4 y get 'no se puede abrir uno: no existe ese archivo o directorio'. Eso me hace pensar que'/dev/null' es obligatorio (por '[script [args]]' en el manual, no '[script] [ args] ') --- ¿entiendo correctamente? Si no objeta, actualizaré la respuesta para explicarlo. ¡Muy apreciado! – cxw

23

Además de la tabla arg, ... contiene los argumentos (arg [1] y arriba) utilizados para invocar la secuencia de comandos.

 
% 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 almacena los argumentos en una tabla. Esta tabla es la tabla "arg". Puede acceder a los argumentos pasados ​​dentro usando arg [1], arg [2], ...

arg [0] es el nombre del programa lua. arg [1] es el primer argumento pasado, arg [2] es el segundo argumento pasado y así sucesivamente ...

2

Si ejecuta file.lua en cmd de freeswitch

freeswitch> luarun prog.lua arg1 

Usted puede utilizar el prog .lua:

#print(argv[1]) 

y ejecute: $lua prog.lua arg1 (correr en carpeta de scripts) puede utilizar prong.lua:

#print(arg[1]) 
Cuestiones relacionadas