Manual Capitulo Seis |
|
Aunque Lua ha sido diseñado para incrustar en un programa principal escrito en C
-- es decir, es un lenguaje de extensión -- también es utilizado para escribir programas. La distribución estándar incluye un intérprete de Lua llamado lua
el cual tiene todas las bibliotecas estándares incluyendo la de "debug".
Se usa así:
lua [opciones] [archivo] [argumentos]
Las opciones son:
-e construcción
: ejecuta string construcción
-l módulo
: ejecuta require 'módulo'
-i
: entrar en el modo interactivo después de ejecutar el archivo
--
: dejar de interpretar opciones
-
: ejecutar stdin
como "script" y dejar de interpretar opciones
Después de interpretar las opciones, lua
ejecuta el "script" dado pasándole los argumentos como cadenas. Llamado sin argumentos, lua
se comporta como si fuera lua -v -i
cuando stdin
es una 'terminal' o sino como lua -
.
Antes de ejecutar cualquier argumento, el intérprete consulta el variable de entorno LUA_INIT
. Si tiene la forma @archivo
, ejecuta tal archivo; sino ejecuta directamente el cotenido mismo.
Salvo por -i
las opciones son interpretadas en su orden. Por ejemplo, la invocación:
$ lua -e'a=1' -e 'print(a)' script.luava a asignar 1 a
a
, después imprimir el valor de a
(es decir, 1
), y finalmente ejecutar el archivo script.lua
sin argumentos. (Aquí $
es el "shell prompt". El suyo puede ser diferente.)
Antes de empezar a ejecutar el "script", lua
recopila todos los argumentos de la linea de comando, poniéndolos en una tabla global llamada arg
. El nombre del archivo está puesto en el índice 0
, el primer argumento después del archivo en el índice 1
, y así sucesivamente. Argumentos antes del nombre del archivo (es decir, el nombre del intérprete más las opciones) están puestos en índices negativos. Por ejemplo, en la invocación:
$ lua -la b.lua t1 t2el intérprete empieza con el archivo
a.lua
y después crea la tabla:
arg = { [-2] = "lua", [-1] = "-la", [0] = "b.lua", [1] = "t1", [2] = "t2" }y finalmente corre el archivo
b.lua
. El "script" es llamado con arg[1], arg[2], …
como argumentos; asimismo podría acceder a los argumentos con la expresión de varargs '...
'
En modo interactivo, si escribe usted un renglón incompleto, el intérprete espera su terminación poniendo un "prompt" distinto.
Cuando la variable global _PROMPT
es una cadena, se usa como el "prompt". Asimismo, cuando la variable global _PROMPT2
es una cadena, se usa como el "prompt" secundario (durante renglones incompletos). Por consecuencia, se puede cambiar ambos en la linea de comando, así:
$ lua -e"_PROMPT='myprompt> '" -i(La
""
exterior es para el "shell"; la ''
interior es para lua
.) Tome nota del uso de -i
para entrar en modo interactivo; sino el programa terminará sin aviso después de la asignación a _PROMPT
. Un programa en Lua puede hacer lo mismo asignando un valor a la variable _PROMPT
.
Para hacer posible el uso de Lua como intérprete de "scripts" en sistemas Unix, el intérprete ignora la primera linea de un "pedazo" si tal linea comienza con #
. De esta manera, scripts de Lua pueden convertirse en programas ejecutables usando chmod +x
y poniendo como primer linea la forma "shebang" #!
:
#!/usr/local/bin/luaPor supuesto, la ubicación del intérprete de Lua podría ser diferente en su máquina. Si
lua
se encuentra en su PATH
, una solución más portable sería
#!/usr/bin/env lua