Аргументы, которые я передаю скрипту lua, равны нулю


Я пишу программу Lua 5.3, и она требует, чтобы в нее передавались аргументы. Я использую таблицу arg для получения первого аргумента: arg[1], но первый аргумент, согласно сценарию, равен нулю, даже если я передал аргумент в файл.

Вот код, который я написал:

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 в На Lua 5.3?

1   2  

1 ответ:

Так как вы называете .Lua script напрямую (C:\Users\WhiteKid\Documents\Scripts>RemoveWhiteSpace.lua " hello world!"), похоже, у вас есть связь с интерпретатором lua. Вам нужно убедиться, что вы передаете %1 или %* интерпретатору, которого вы вызываете в этой ассоциации. Кроме того, попробуйте вызвать интерпретатор Lua и передать имя скрипта и параметры, и он должен работать так, как вы ожидаете.

Кроме того, вы должны проверить, присутствует ли arg[1] и проверить, есть ли там также кавычки (так как они могут быть удалены до того, как параметры попадут в сценарий, поэтому не стоит всегда их ожидать).