大多数计算机命令由两部分组成:命令和参数。命令是要执行的程序,而参数可能是命令选项或用户输入。如果没有这种结构,用户将不得不编辑命令的代码,以改变命令所处理的数据。想象一下重写 printf命令只是为了让你的计算机用 “hello world” 消息问候你。参数对于交互式计算至关重要,Lua 编程语言提供了 在 Lua 中使用参数几乎每一个给计算机的命令都假定一个参数,即使它期望参数是一个空列表。 Lua 会记录启动后写入的内容,即使你可能对这些参数不做任何操作。要在 Lua 启动时使用用户提供的参数,请迭代 local args = {...}for i,v in ipairs(args) do print(v)end 运行代码:
参数是不安全的,Lua 会完全按照输入的方式打印所有参数。 解析参数对于简单的命令,Lua 的基本功能足以解析和处理参数。这是一个简单的例子: -- 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 == '--say' then echo('echo: ' .. args[i+1]) endend 在 在 最后,在 第二个 命令参数的分隔符是一个或多个空格。运行代码查看结果:
大多数用户都知道在向计算机发出命令时空格很重要,因此在这种情况下删除第三个参数是预期的行为。下面是演示两种有效“转义”方法的变体: $ lua ./echo.lua --say 'zombie apocalypse'1: --say2: zombie apocalypseecho: zombie apocalypse$ lua ./echo.lua --say zombie\ apocalypse1: --say2: zombie apocalypseecho: zombie apocalypse 解析参数手动解析参数简单且无依赖性。但是,你必须考虑一些细节。大多数现代命令都允许使用短选项(例如, 使用 LuaRocks可以轻松安装其他库。有一些非常好的工具,例如alt-getopt,它们为解析参数提供了额外的基础设施。 via: https:///article/22/11/lua-command-arguments |
|
来自: lifebegins40s > 《linux》