自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用 Lua 解析參數(shù)

系統(tǒng) Linux
參數(shù)對(duì)于交互式計(jì)算至關(guān)重要,Lua 編程語(yǔ)言提供了?{...}?表達(dá)式來(lái)封裝在啟動(dòng) Lua 腳本時(shí)給定的可變參數(shù)。

大多數(shù)計(jì)算機(jī)命令由兩部分組成:命令和參數(shù)。命令是要執(zhí)行的程序,而參數(shù)可能是命令選項(xiàng)或用戶輸入。如果沒(méi)有這種結(jié)構(gòu),用戶將不得不編輯命令的代碼,以改變命令所處理的數(shù)據(jù)。想象一下重寫 ??printf??? 命令只是為了讓你的計(jì)算機(jī)用 “hello world” 消息問(wèn)候你。參數(shù)對(duì)于交互式計(jì)算至關(guān)重要,??Lua 編程語(yǔ)言??? 提供了 ??{...}?? 表達(dá)式來(lái)封裝在啟動(dòng) Lua 腳本時(shí)給定的可變參數(shù)。

在 Lua 中使用參數(shù)

幾乎每一個(gè)給計(jì)算機(jī)的命令都假定一個(gè)參數(shù),即使它期望參數(shù)是一個(gè)空列表。 Lua 會(huì)記錄啟動(dòng)后寫入的內(nèi)容,即使你可能對(duì)這些參數(shù)不做任何操作。要在 Lua 啟動(dòng)時(shí)使用用戶提供的參數(shù),請(qǐng)迭代 ??{...}?? 表:

local args = {...}for i,v in ipairs(args) do    print(v)end

運(yùn)行代碼:

$ lua ./myargs.lua$ lua ./myargs.lua foo --bar bazfoo--barbaz----

參數(shù)是不安全的,Lua 會(huì)完全按照輸入的方式打印所有參數(shù)。

解析參數(shù)

對(duì)于簡(jiǎn)單的命令,Lua 的基本功能足以解析和處理參數(shù)。這是一個(gè)簡(jiǎn)單的例子:

-- setuplocal args = {...}-- enginefunction echo(p)   print(p)end-- gofor i,v in ipairs(args) do  print(i .. ": " .. v)endfor i,v in ipairs(args) do  if args[i] == "--say" then    echo("echo: " .. args[i+1])  endend

在 ??setup?? 部分,將所有命令參數(shù)轉(zhuǎn)儲(chǔ)到名為 ??args?? 的變量中。

在 ??engine?? 部分,創(chuàng)建一個(gè)名為 ??echo?? 的函數(shù),用于打印你“輸入”其中的任何內(nèi)容。

最后,在 ??go?? 部分,解析 ??args?? 變量(用戶在啟動(dòng)時(shí)提供的參數(shù))中的索引和值。在此示例代碼中,為清楚起見,第一個(gè) ??for?? 循環(huán)僅打印每個(gè)索引和值。

第二個(gè) ??for?? 循環(huán)使用索引來(lái)檢查第一個(gè)參數(shù),它被假定是一個(gè)選項(xiàng)。此示例代碼中唯一有效的選項(xiàng)是 ??--say??。如果循環(huán)找到字符串 ??--say??,它會(huì)調(diào)用 ??echo?? 函數(shù),并將當(dāng)前參數(shù)的索引 加 1下一個(gè) 參數(shù))作為函數(shù)參數(shù)提供。

命令參數(shù)的分隔符是一個(gè)或多個(gè)空格。運(yùn)行代碼查看結(jié)果:

$ lua ./echo.lua --say zombie apocalypse1: --say2: zombie3: apocalypseecho: zombie

大多數(shù)用戶都知道在向計(jì)算機(jī)發(fā)出命令時(shí)空格很重要,因此在這種情況下刪除第三個(gè)參數(shù)是預(yù)期的行為。下面是演示兩種有效“轉(zhuǎn)義”方法的變體:

$ lua ./echo.lua --say "zombie apocalypse"1: --say2: zombie apocalypseecho: zombie apocalypse$ lua ./echo.lua --say zombie\ apocalypse1: --say2: zombie apocalypseecho: zombie apocalypse

解析參數(shù)

手動(dòng)解析參數(shù)簡(jiǎn)單且無(wú)依賴性。但是,你必須考慮一些細(xì)節(jié)。大多數(shù)現(xiàn)代命令都允許使用短選項(xiàng)(例如,??-f??)和長(zhǎng)選項(xiàng)(??--foo??),并且大多數(shù)命令都提供 ??-h?? 或 ??--help?? 或者在沒(méi)有所需參數(shù)時(shí)顯示幫助菜單。

使用 ??LuaRocks?? 可以輕松安裝其他庫(kù)。有一些非常好的工具,例如 ??alt-getopt??,它們?yōu)榻馕鰠?shù)提供了額外的基礎(chǔ)設(shè)施。

責(zé)任編輯:龐桂玉 來(lái)源: Linux
相關(guān)推薦

2022-11-10 09:05:18

Lua配置文件

2011-08-29 16:37:21

Lua協(xié)同線程

2011-08-23 11:25:40

LUA函數(shù)TOC

2011-08-24 15:22:09

2011-08-23 17:33:08

LuaMetatable

2011-08-31 15:59:10

LUAWeb 開發(fā)

2011-08-29 15:58:51

Lua函數(shù)

2011-08-30 11:00:10

MySQL ProxyLua

2011-08-22 18:00:53

Lua語(yǔ)言

2019-07-25 09:15:36

Python參數(shù)命令

2013-12-08 20:32:32

WaxLua

2023-06-08 17:20:37

Lua樹莓派

2011-08-31 16:47:07

Lua調(diào)試器

2011-09-06 17:12:25

Lua腳本C++封裝庫(kù)

2011-08-25 16:38:06

EditPluslua

2021-04-05 17:22:13

Lua文件數(shù)據(jù)編程語(yǔ)言

2011-08-23 09:44:28

LUA腳本

2011-08-31 15:41:38

Lua解釋器

2011-08-23 13:15:37

LUAPackage

2021-05-12 10:17:15

Shell工具Linux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)