第一版是針對 Lua 5.0 編寫的。雖然在很大程度上仍然適用於後續版本,但有一些區別。
第四版針對 Lua 5.3,可在 Amazon 和其他書店購買。
購買本書,您還可以幫助 支持 Lua 項目


22.2 – 其他系統呼叫

os.exit 函式終止程式的執行。os.getenv 函式取得環境變數的值。它接收變數名稱並傳回一個包含其值的字串

    print(os.getenv("HOME"))    --> /home/lua
如果未定義變數,呼叫會傳回 nilos.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'