我传递给 lua 脚本的参数为零

Arguments that I pass to a lua script are nil

我正在编写一个 Lua 5.3 程序,它需要将参数传递给它。我使用 arg table 来获取第一个参数: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 脚本?

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

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