我传递给lua脚本的参数是nil

时间:2017-06-30 23:38:42

标签: lua command-line-arguments lua-5.3

我正在编写一个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]在没有的情况下是零值。是否有不同的方法将参数传递给Lua 5.3中的lua脚本?

1 个答案:

答案 0 :(得分:2)

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

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