Lua:
Чтение аргументов командной строки
Как это сделать:
Вот основная информация о захвате этих аргументов в Lua:
-- Сохраните это как 'greet.lua'
local name = arg[1] -- arg[1] является первым аргументом командной строки
print("Привет, " .. (name or "незнакомец") .. "!")
Запустите терминал и выполните его:
$ lua greet.lua LuaLearner
Привет, LuaLearner!
Нет имени? Не проблема:
$ lua greet.lua
Привет, незнакомец!
Глубокое погружение
Lua держит все просто с глобальной таблицей arg
. Исторически люди читали аргументы командной строки в программировании с самого начала времен (ну, по крайней мере, с рождения UNIX). Это столп настройки.
В Lua, arg
- это массив со всеми сладостями командной строки. arg[0]
- это имя скрипта, а с arg[1]
и далее - это собственно аргументы. Вы можете захватить их все с помощью цикла, если чувствуете себя изощренным:
for i = 1, #arg do
print("Аргумент " .. i .. ": " .. arg[i])
end
Альтернативы? Конечно, есть библиотеки для сложного анализа аргументов (например, Penlight
), но во многих случаях, arg
справляется без лишних хлопот.
Что касается деталей реализации, помните, что массивы в Lua начинаются с 1 (они начинают считать с 1), а не с 0, как во многих других языках. Вот почему arg[1]
является первым аргументом, а не arg[0]
.
Смотрите также
Для тех, кто хочет больше, вот немного дополнительной информации:
- Руководство по Lua 5.4 о таблице
arg
: https://www.lua.org/manual/5.4/manual.html#6.1 - “Programming in Lua” (4-е издание) для твердого понимания основ Lua: https://www.lua.org/pil/contents.html
- Penlight, утилитная библиотека Lua с расширенным анализом аргументов: https://github.com/lunarmodules/Penlight