How to exit a Lua script's execution?
Solution 1
extract from the lua api doc :
For syntactic reasons, a break or return can appear only as the last statement of a block (in other words, as the last statement in your chunk or just before an end, an else, or an until). For instance, in the next example, break is the last statement of the then block.
local i = 1
while a[i] do
if a[i] == v then break end
i = i + 1
end
Usually, these are the places where we use these statements, because any other statement following them is unreachable. Sometimes, however, it may be useful to write a return (or a break) in the middle of a block; for instance, if you are debugging a function and want to avoid its execution. In such cases, you can use an explicit do block around the statement:
function foo ()
return --<< SYNTAX ERROR
-- `return' is the last statement in the next block
do return end -- OK
... -- statements not reached
end
Solution 2
Use os.exit()
or just return
from some "main" function if your script is embedded.
Solution 3
os.exit()
kill process by sending a signal
do return end
stop execution
The two methods are not equal if you want to write and execute some luacode in the interpreter after stopping the execution by launching your program using the -i
flag.
th -i main.lua
Solution 4
In lua 5.2.0-beta-rc1+, you can add a label at the end of your code called ::exit::
or something of the like, and then whenever you need to exit the program just call it like this:
goto exit
Related videos on Youtube

Comments
-
Prashant Gaur 11 months
I want to exit execution of Lua script on some condition . Example :
content = get_content() if not content then -- ( Here i want some kind of exit function ) next_content = get_content() --example there can lot of further checks
Here I want that if I am not getting content my script suppose to terminate is should not go to check to next.
-
greatwolf over 9 years
os.exit()
does just that.
-
-
Kevin Bullaughey about 6 yearsIn what way are they not equal?
-
Kalib Zen over 2 yearsNot sure what do you mean by adding a label of
::exit::
, is that a typo ? I don't think it's a correct syntax of lua. -
Lothar over 2 yearsIt is valid Lua syntax
-
ToiletGuy over 1 yearOk, that is for the newest lua. I tried on old lua did not work