2

我正在编写一个 Lua 5.3 程序,它需要将参数传递给它。我使用该arg表来获取第一个参数:arg[1],但根据脚本,即使我已将参数传递给文件,第一个参数也是 nil。

这是我编写的代码:

local strin = arg[1]:sub(2,arg[1]:len()-1)   -- to remove the quote marks
local i = 0
for W in strin:gmatch(".") do
    i = i + 1
    if W == " " or W == "\t" then strin = strin:sub(i+1) else break end
end
print(strin)

我将参数传递给文件,如下所示:

C:\Users\WhiteKid\Documents\Scripts>RemoveWhiteSpace.lua "     hello world!"

它认为 arg[1] 不是 nil 值。在 Lua 5.3 中是否有不同的方式将参数传递给 lua 脚本?

4

1 回答 1

2

由于您直接调用 .lua 脚本 ( C:\Users\WhiteKid\Documents\Scripts>RemoveWhiteSpace.lua " hello world!"),因此您似乎与 lua 解释器有关联。您需要确保您通过%1或传递%*给您在该协会中呼叫的口译员。或者,尝试调用 Lua 解释器并传递脚本名称和参数,它应该可以按预期工作。

此外,您应该检查是否arg[1]存在并检查引号是否也存在(因为它们可能在参数到达脚本之前被删除,因此您不应该总是期望它们)。

于 2017-07-01T06:04:41.630 回答