Purpose:Invoke the internal Lua interpreter


Format:LUA [options] [script [args]]


-e _stat_executes string stat;
-l _mod_"requires" mod;
-ienters interactive mode after running script;
-v prints version information;
-- stops handling options;
- executes stdin as a file and stops handling options.




The internal Lua is version 5.4.4.


After handling its options, lua runs the given script, passing to it the given args as string arguments. When called without arguments, lua behaves as lua -v -i when the standard input (stdin) is the console, and as lua - otherwise.


Before running any argument, the interpreter checks for an environment variable LUA_INIT. If its format is @_filename_, then lua executes the file. Otherwise, lua executes the string itself.


All options are handled in order, except -i. For instance, an invocation like


lua -e "a=1" -e print(a) script.lua


will first set a to 1, then print the value of a, and finally run the file script.lua with no arguments.


Before starting to run the script, lua collects all arguments in the command line in a global table called arg. The script name is stored at index 0, the first argument after the script name goes to index 1, and so on. Any arguments before the script name (that is, the interpreter name plus the options) go to negative indices. For instance, in the call


lua -la b.lua t1 t2


the interpreter first runs the file a.lua, then creates a table


arg = {

[-2] = "lua",

[-1] = "-la",

[0] = "b.lua",

[1] = "t1", [2] = "t2" }


and finally runs the file b.lua. The script is called with arg[1], arg[2], ... as arguments; it can also access these arguments with the vararg expression '=...='.


In interactive mode, if you write an incomplete statement, the interpreter waits for its completion by issuing a different prompt.


If the global variable _PROMPT contains a string, then its value is used as the prompt. Similarly, if the global variable _PROMPT2 contains a string, its value is used as the secondary prompt (issued during incomplete statements). Therefore, both prompts can be changed directly on the command line. For instance,


lua -e"_PROMPT='myprompt> '" -i


(the outer pair of quotes is for the shell, the inner pair is for Lua), or in any Lua programs by assigning to _PROMPT. Note the use of -i to enter interactive mode; otherwise, the program would just end silently right after the assignment to _PROMPT.