2010-05-31 4 views
26

Я хочу сделатьинтерактивные Lua: аргументы командной строки

lua prog.lua arg1 arg2 

из командной строки

Внутри prog.lua, я хочу сказать, например

print (arg1, arg2, '\n') 

Lua Безразлично» t, похоже, имеет argv [1] и т. д., и методы, которые я видел для обработки аргументов командной строки, кажутся незрелыми и/или громоздкими. Я что-то упускаю?

+1

Мне любопытно, какие «незрелые/громоздкие» решения вы видели с такой [прямой проблемой] (http://www.google.com/search?q=lua+command+line+arguments&btnI=1). – Miles

+2

http://lua-users.org/wiki/CommandLineModule кажется громоздким по сравнению со встроенным argc, argv; getopt (на C:/Program Files/Lua/5.1/docs/stdlib/getopt.html на моей машине) имеет TODO, написанный на нем, а объявленный пример пуст. Спасибо за указатель на руководство для arg. Google не сделал для меня то, что он сделал для вас, я был повсюду, пытаясь найти это. Это одна из вещей о том, чтобы быть n00b (снова) - простейшие вещи просто не работают :-( –

ответ

42

Вы упускаете arg вектор, который имеет элементы, которые вы хотите в arg[1], arg[2], и так далее: (! Спасибо Miles)

% lua -i -- /dev/null one two three 
Lua 5.1.3 Copyright (C) 1994-2008 Lua.org, PUC-Rio 
> print(arg[2]) 
two 
> 

Подробнее в Lua manual section on Lua standalone.

+1

Вы абсолютно правы, я есть! Местонахождение в руководстве это? Я не нахожу мой путь вокруг него очень хорошо ATM. Cheers –

+2

http://www.lua.org/manual/5.1/manual.html#6 – Miles

+0

Спасибо за ответ! Я попробовал 'lua -i - один два три' на lua 5.2.4 и получил 'не может открыть один: нет такого файла или каталога'. Это заставляет меня думать, что требуется'/dev/null' (per '[script [args]]' в руководстве, а не '[script] [ args] ') --- Я правильно понимаю? Если вы не возражаете, я обновляю ответ, чтобы объяснить. – cxw

23

В дополнение к таблице arg, ... содержит аргументы (arg [1] и выше), используемые для вызова сценария.

 
% lua -i -- /dev/null one two three 
Lua 5.1.3 Copyright (C) 1994-2008 Lua.org, PUC-Rio 
> print(...) 
one  two  three 
5

Lua хранит аргументы в таблице. Эта таблица является таблицей «arg». Вы можете получить доступ к переданным аргументам внутри, используя arg [1], arg [2], ...

arg [0] - имя программы lua. Arg [1] является первым аргументом, переданным, Arg [2] является второй аргумент, переданный и так далее ...

2

Если запустить file.lua в ЦМД из FreeSWITCH

freeswitch> luarun prog.lua arg1 

Вы можете использовать прогу .lua:

#print(argv[1]) 

И бежать: $lua prog.lua arg1 (запустить в папке скрипта) Вы можете использовать prong.lua:

#print(arg[1]) 
Смежные вопросы