Аргументы, которые я передаю скрипту 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]
присутствует и проверьте, есть ли там кавычки (так как они могут быть удалены до того, как параметры попадут в скрипт, поэтому вы не всегда должны ожидать их).