Чтение аргументов командной строки

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].

Смотрите также

Для тех, кто хочет больше, вот немного дополнительной информации: