第一版是为 Lua 5.0 编写的。虽然在很大程度上仍然适用于后续版本,但有一些区别。
第四版针对 Lua 5.3,可在 亚马逊 和其他书店购买。
购买本书,您还可以帮助支持 Lua 项目


22.2 – 其他系统调用

os.exit 函数终止程序执行。os.getenv 函数获取环境变量的值。它接收变量名称并返回一个包含其值的字符串

    print(os.getenv("HOME"))    --> /home/lua
如果未定义变量,则调用返回 nil。函数 os.execute 运行系统命令;它等效于 C 中的 system 函数。它接收一个包含命令的字符串并返回一个错误代码。例如,在 Unix 和 DOS-Windows 中,您可以编写以下函数来创建新目录
    function createDir (dirname)
      os.execute("mkdir " .. dirname)
    end
os.execute 函数功能强大,但它也高度依赖系统。

os.setlocale 函数设置 Lua 程序使用的当前区域设置。区域设置定义对文化或语言差异敏感的行为。setlocale 函数有两个字符串参数:区域设置名称和类别,该类别指定区域设置将影响哪些功能。区域设置有六个类别:"collate" 控制字符串的字母顺序;"ctype" 控制单个字符的类型(例如,什么是字母)以及大小写之间的转换;"monetary" 对 Lua 程序没有影响;"numeric" 控制数字的格式;"time" 控制日期和时间的格式(即函数 os.date);"all" 控制上述所有函数。默认类别是 "all",因此,如果您仅使用区域设置名称调用 setlocale,它将设置所有类别。setlocale 函数返回区域设置名称,如果失败(通常是因为系统不支持给定的区域设置),则返回 nil

    print(os.setlocale("ISO-8859-1", "collate"))   --> ISO-8859-1

类别 "numeric" 有点棘手。虽然葡萄牙语和其他拉丁语使用逗号而不是句点来表示小数,但区域设置不会改变 Lua 解析数字的方式(原因之一是,诸如 print(3,4) 之类的表达式在 Lua 中已经具有含义)。因此,您最终可能会遇到一个既不能识别带逗号的数字,也不能理解带句点的数字的系统

    -- set locale for Portuguese-Brazil
    print(os.setlocale('pt_BR'))    --> pt_BR
    print(3,4)                      --> 3    4
    print(3.4)       --> stdin:1: malformed number near `3.4'