将参数传递给 Lua 脚本时为 nil 的问题

我正在编写一个 Lua 5.3 程序,需要传递参数给它。我使用 arg 表获取第一个参数:arg[1],但是脚本显示第一个参数为 nil,即使我已经向文件传递了参数。

我编写的代码如下:

local strin = arg[1]:sub(2,arg[1]:len()-1)   -- 用于删除引号
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 脚本参数的另一种方式?

点赞
用户1442917
用户1442917

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

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

2017-07-01 06:04:41