How to exit a Lua script's execution?

lua
80,638

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
Share:
80,638

Related videos on Youtube

Prashant Gaur
Author by

Prashant Gaur

Engineering Leader | Python Developer

Updated on July 09, 2022

Comments

  • Prashant Gaur
    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
      greatwolf over 9 years
      os.exit() does just that.
  • Kevin Bullaughey
    Kevin Bullaughey about 6 years
    In what way are they not equal?
  • Kalib Zen
    Kalib Zen over 2 years
    Not 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
    Lothar over 2 years
    It is valid Lua syntax
  • ToiletGuy
    ToiletGuy over 1 year
    Ok, that is for the newest lua. I tried on old lua did not work