指令格式:
lua 首先會執行環境變數 LUA_INIT 的內容,LUA_INIT 也可以是「@filename」格式,會去執行 filename 的內容。
script 是 Lua 命令檔,整個指令行每個欄位會變成執行 script 時,名為「arg」的全域表格,其中
- arg[0]:是 script
- arg[1] 開始分別是每一個 args,每個 args 如果有空格或其它 shell 特殊字元,則需要加 quoted。shell 會移除這些 quotes。
- #arg:args 的數目,也等於最後 argument 的 index
- arg 負的 index 包括 script 前面的指令行,一直到 interpreter 名稱。
編輯 hello.lua,內容如下:(說明:print("印出的字串"),用「..」結合字串)
# this line ignored在 shell 執行指令
print("number args:"..#arg)
print("arg[-2]:"..arg[-2])
print("arg[-1]:"..arg[-1])
print("arg[0]:"..arg[0])
print("arg[1]:"..arg[1])
print("arg[2]:"..arg[2])
print("arg[3]:"..arg[3])
LUA_INIT='print("LUA_INIT first")' lua -v arg.lua Hello Word "last arg"其輸出如下:
LUA_INIT first可看出 lua 先執行 LUA_INIT,然後選項 -v 顯示版本訊息,最後才是執行 arg.lua 的結果,印出 args 數目及所有 args,其中 last arg 中間有空格,所以需要用 quote。
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
number args:3
arg[-2]:lua
arg[-1]:-v
arg[0]:arg.lua
arg[1]:Hello
arg[2]:Word
arg[3]:last arg
script 檔案的第一行如果是「#」開頭,會忽略。如果寫成「#!/usr/bin/lua -v」,在 Linux 檔案就可以直接執行。
指令「luac arg.lua」會將 arg.lua 編譯成二進位的 lua bytecode 程式 luac.out,用法跟 arg.lua 一樣,只是加速 lua 載入時間,不用再編譯成 bytecode。bytecode 檔並不表示執行較快,或檔案較小。
指令「lua -e stat」直接執行 lua statement stat。例如「lua -e 'print("Hello Word")'」
指令「lua -」執行來自 stdin 的 lua 程式,例如「echo 'print("Hello Word")' | lua -」
lua option「-l name」用來載入 library,相當於呼叫 require('name') 。
只執行指令「lua」進入互動模式,prompt the user and execute lines from the standard input。輸入 end-of-file 字元結束,在 Linux 是 Ctrl-D, 在 DOS/Windows 是 Ctrl-Z (Ctrl-Z 在 Linux 會讓程式進入背景執行), 或呼叫來自 os library 的 os.exit()。
- lines are read until a complete statement is formed or a syntax error is found
- 一種中斷不完整的 statement,強迫 syntax error 的方式是輸入「;」。
- If a line starts with '=', then lua displays the values of all the expressions in the remainder of the line. The expressions must be separated by commas.
- The default prompts are "> " and ">> ". The global variables _PROMPT and _PROMPT2 can change the prompts.
References
- man lua
- man luac
- 本站 Lua 相關文章

沒有留言:
張貼留言