War*_*ian 2 parameters lua operating-system exit
在 Lua 文档中,他们说退出脚本时code参数 inos.exit([code])返回的值不是 0,例如,如果我运行以下行:
os.exit(7)
Run Code Online (Sandbox Code Playgroud)
它将产生以下输出:
>Exit code: 7
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么以及何时更改脚本的退出值会有用?例如,我将在何时何地使用此退出代码“7”?
该值返回给运行 Lua 解释器的进程;C 语言具有相同的功能。
通常,0在成功执行脚本时返回,并且在出现某种错误时返回非零值。如果从另一个脚本调用 Lua 脚本,错误代码可以指导调用脚本处理错误。
在 Bash 中,您可以通过检查$?shell 变量来检查返回值:
$ lua -e "os.exit(7)"
$ echo $?
7
Run Code Online (Sandbox Code Playgroud)
如果您使用 调用另一个 Lua 脚本中的 Lua 脚本os.execute,则退出代码是三个返回值中的第三个:
handy_script:
#!/usr/bin/env lua
io.write(string.format("Doing something important...\n"))
os.exit(7)
Run Code Online (Sandbox Code Playgroud)
main_script:
#!/usr/bin/env lua
b, s, n = os.execute("./handy_script")
io.write(string.format("handy_script returned %s, %s: %d\n", tostring(b), s, n))
Run Code Online (Sandbox Code Playgroud)
#!/usr/bin/env lua
io.write(string.format("Doing something important...\n"))
os.exit(7)
Run Code Online (Sandbox Code Playgroud)
如果命令成功执行,则返回的第一个值os.execute是布尔值true,fail否则(从 Lua 5.4 开始,fail仍然等效于nil)。"exit"如果命令正常终止,或者"signal"它被信号终止,则返回的第二个值是字符串。返回的第三个值是调用os.exit(), here的退出代码7。