手册第六章

lua-users home
wiki

6. Lua 解释器

虽然 Lua 被设计为嵌入到用 C 编写的程序中——也就是说,它是一种扩展语言——但它也用于编写程序。标准发行版包含一个名为 lua 的 Lua 解释器,它包含所有标准库,包括“调试”库。

使用方法如下

    lua [opciones] [archivo] [argumentos]

选项如下

在解释选项后,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

最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2007 年 2 月 23 日下午 7:35 GMT (差异)