手册第六章 |
|
虽然 Lua 被设计为嵌入到用 C
编写的程序中——也就是说,它是一种扩展语言——但它也用于编写程序。标准发行版包含一个名为 lua
的 Lua 解释器,它包含所有标准库,包括“调试”库。
使用方法如下
lua [opciones] [archivo] [argumentos]
选项如下
-e 构造
:执行字符串 构造
-l 模块
:执行 require '模块'
-i
:在执行文件后进入交互模式
--
:停止解释选项
-
:执行 stdin
作为“脚本”并停止解释选项
在解释选项后,lua
执行给定的“脚本”,并将参数作为字符串传递给它。在没有参数的情况下调用时,lua
的行为类似于 lua -v -i
(当 stdin
是一个“终端”时),否则类似于 lua -
。
在执行任何参数之前,解释器会查询环境变量 LUA_INIT
。如果它具有 @文件
的形式,则执行该文件;否则直接执行其内容。
除了 -i
之外,选项按顺序解释。例如,调用
$ lua -e'a=1' -e 'print(a)' script.lua将把 1 赋值给
a
,然后打印 a
的值(即 1
),最后执行文件 script.lua
,不带任何参数。(这里 $
是“shell 提示符”。你的提示符可能不同。)
在开始执行“脚本”之前,lua
会收集所有命令行参数,并将它们放入一个名为 arg
的全局表中。文件名放在索引 0
中,第一个参数放在索引 1
中,依此类推。文件名之前的参数(即解释器名称加上选项)放在负索引中。例如,在调用
$ lua -la b.lua t1 t2中,解释器从文件
a.lua
开始,然后创建表
arg = { [-2] = "lua", [-1] = "-la", [0] = "b.lua", [1] = "t1", [2] = "t2" }最后运行文件
b.lua
。“脚本”使用 arg[1], arg[2], …
作为参数调用;它也可以使用 varargs 表达式 '...
' 访问参数。
在交互模式下,如果您输入了一个不完整的行,解释器会等待您完成它,并显示一个不同的“提示符”。
当全局变量 _PROMPT
是一个字符串时,它被用作“提示符”。同样,当全局变量 _PROMPT2
是一个字符串时,它被用作辅助“提示符”(在不完整的行期间)。因此,您可以在命令行中更改两者,例如
$ lua -e"_PROMPT='myprompt> '" -i(
""
外部用于“shell”;''
内部用于 lua
。) 请注意使用 -i
进入交互模式;否则程序将在分配给 _PROMPT
后无提示地结束。Lua 程序可以通过将值分配给变量 _PROMPT
来实现相同的效果。
为了使 Lua 能够在 Unix 系统中用作“脚本”解释器,解释器会忽略代码段的第一行,如果该行以 #
开头。这样,Lua 脚本可以通过使用 chmod +x
并将“shebang”形式 #!
作为第一行来转换为可执行程序。
#!/usr/local/bin/lua当然,Lua 解释器的位置可能在您的机器上有所不同。如果
lua
位于您的 PATH
中,更便携的解决方案是
#!/usr/bin/env lua