Manual 第六章

lua-users home
wiki

6. Lua 解释器

尽管 Lua 被设计成嵌入到用 C 编写的主程序中——也就是说,它是一种扩展语言——但它也可以用来编写程序。标准发行版包含一个名为 lua 的 Lua 解释器,它拥有所有标准的库,包括“debug”库。

用法如下

    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 prompt”。你的可能不同。)

在开始执行“脚本”之前,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

RecentChanges · preferences
编辑 · 历史
最后编辑于 2007年2月23日 下午1:35 GMT (差异)