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

Я пишу программу на Lua 5.3, и она требует передачи аргументов. Я использую arg Таблица для получения первого аргумента: arg[1], но 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 ответ

Решение

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

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

Другие вопросы по тегам