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