第一版是針對 Lua 5.0 編寫的。儘管在很大程度上仍然適用於後續版本,但仍存在一些差異。
第四版針對 Lua 5.3,可在 Amazon 和其他書店購買。
購買本書,您還可以協助 支持 Lua 專案


1.4 – 獨立執行器

獨立執行器(也稱為 lua.c,因為這是其原始檔,或簡稱為 lua,因為這是其可執行檔)是一個小型程式,允許直接使用 Lua。本節說明其主要選項。

當執行器載入檔案時,如果第一行以數字符號(`#´)開頭,則會略過該行。此功能允許在 Unix 系統中將 Lua 用作指令碼執行器。如果您使用類似下列內容來啟動程式

    #!/usr/local/bin/lua
(假設獨立執行器位於 /usr/local/bin),或
    #!/usr/bin/env lua
則您可以直接呼叫程式,而無需明確呼叫 Lua 執行器。

lua 的用法為

    lua [options] [script [args]]
所有內容都是選用的。正如我們已經看到的,當我們在沒有引數的情況下呼叫 lua 時,執行器會進入互動模式。

-e 選項允許我們直接在命令列中輸入程式碼。例如,

    prompt> lua -e "print(math.sin(12))"   --> -0.53657291800043
(Unix 需要雙引號才能阻止 shell 解釋括號。)正如我們先前所見,-l 會載入檔案,而 -i 會在執行其他引數後進入互動模式。因此,例如,呼叫
    prompt> lua -i -l a.lua -e "x = 10"
將會載入檔案 a.lua,然後執行指定 x = 10,最後顯示提示以進行互動。

每當定義全域變數 _PROMPT 時,lua 都會在互動時使用其值作為提示。因此,您可以使用類似這樣的呼叫來變更提示

    prompt> lua -i -e "_PROMPT=' lua> '"
     lua>
我們假設 "prompt" 是系統提示。在範例中,外層引號會阻止 shell 解釋內層引號,而內層引號則由 Lua 解釋。更確切地說,Lua 會收到以下命令來執行
    _PROMPT=' lua> '
這會將字串 " lua> " 指定給全域變數 _PROMPT

在開始執行參數之前,lua 會尋找一個名為 LUA_INIT 的環境變數。如果存在此變數且其內容為 @filename,則 lua 會載入指定的檔案。如果定義了 LUA_INIT 但其開頭不是 @,則 lua 會假設其包含 Lua 程式碼並執行它。在設定獨立直譯器時,這個變數可提供極大的彈性,因為您可以在設定中使用 Lua 的所有功能。您可以預先載入套件、變更提示字元和路徑、定義自己的函式、重新命名或刪除函式,等等。

主腳本可以在全域變數 arg 中擷取其參數。在類似下列的呼叫中

    prompt> lua script a b c
lua 會在執行腳本之前建立包含所有命令列參數的表格 arg。腳本名稱會放入索引 0;其第一個參數(範例中的 a)會放入索引 1,以此類推。任何選項都會放入負索引,因為它們會出現在腳本之前。例如,在呼叫中
    prompt> lua -e "sin=math.sin" script a b
lua 會以下列方式收集參數
    arg[-3] = "lua"
    arg[-2] = "-e"
    arg[-1] = "sin=math.sin"
    arg[0] = "script"
    arg[1] = "a"
    arg[2] = "b"
通常,腳本只會使用正索引(範例中的 arg[1]arg[2])。