| 手册第六章 | 
 | 
虽然 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