手冊第六章 |
|
儘管 Lua 是設計為內嵌在以 C
編寫的主程式中,也就是,它是延伸性語言;但它也可用於撰寫程式。標準配發包含一個稱為 lua
的 Lua 詮譯器,它擁有包括「偵錯」在內的所有標準函式庫。
其使用方式如下
lua [opciones] [archivo] [argumentos]
選項為
-e 陳述式
:執行字串 陳述式
-l 模組
:執行 require '模組'
-i
:執行完檔案後,進入互動模式--
:停止詮釋選項-
:將 stdin
當成「指令碼」執行,並停止詮釋選項詮釋完選項後,lua
執行指定的「指令碼」,並將參數傳遞給它作為字串。未帶參數呼叫時,lua
的行為會視 stdin
是否為「終端機」而有所不同,若為「終端機」,則行為如同 lua -v -i
,否則行為如同 lua -
。
在執行任何參數之前,詮譯器會查詢環境變數 LUA_INIT
。如果格式為 @檔案
,則執行該檔案;否則直接執行內容。
除了 -i
以外,選項的詮釋順序與列出順序相同。例如,呼叫
$ lua -e'a=1' -e 'print(a)' script.lua會將 1 指定給
a
,接著印出 a
的值(也就是 1
),最後執行檔案 script.lua
,但不帶參數。(這裡的 $
是「殼層提示符號」。您使用的可能有所不同。)在開始執行「指令碼」之前,lua
會收集所有命令列參數,並將它們放到稱為 arg
的全域性表格中。檔案名稱置於索引 0
,檔案後的第 1 個參數置於索引 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], …
作為參數進行呼叫;另外也可以使用變數參數表示式「...
」來存取參數。在互動模式中,如果您輸入不完整的行,詮譯器會在提示符號變更後等待您完成。P>
當全域性變數 _PROMPT
是字串時,會將它用作「提示符號」。此外,當全域性變數 _PROMPT2
是字串時,會將它用作次要「提示符號」(用於不完整的行)。因此,您可以在命令列中變更兩者,例如
$ lua -e"_PROMPT='myprompt> '" -i(外層
""
用於「殼層」;內層 ''
用於 lua
。)請注意使用 -i
來進入互動模式;否則,程式會在指定 _PROMPT
後立即結束,不作任何提示。Lua 程式也能透過指定 _PROMPT
變數的值來執行相同的動作。要使 Lua 可在 Unix 系統中作為「指令碼」的直譯器,若「區段」的第一行以 #
開頭的話,直譯器將會略過該行。如此一來,Lua 的指令碼便能使用 chmod +x
轉換成可執行程式,並將「shebang」形式 #!
放置於第一行。
#!/usr/local/bin/lua當然,在您的機器上,Lua 直譯器的位址可能會有所不同。如果
lua
存在於您的 PATH
中,一個更動態的解決方案會是#!/usr/bin/env lua