web-dev-qa-db-fra.com

lua interactif: arguments de ligne de commande

Je souhaite faire

 lua prog.lua arg1 arg2

depuis la ligne de commande

Dans prog.lua, je veux dire, par exemple

print (arg1, arg2, '\n')

Lua ne semble pas avoir argv [1] etc. et les méthodes que j'ai vues pour traiter les arguments de ligne de commande semblent immatures et/ou lourdes. Suis-je en train de manquer quelque chose?

31
mr calendar

Il vous manque le vecteur arg, qui contient les éléments que vous souhaitez dans arg[1], arg[2], etc:

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

Plus d'informations dans la section du manuel Lua sur Lua autonome (merci Miles!).

46
Norman Ramsey

En plus de la table arg, ... contient les arguments (arg [1] et plus) utilisés pour appeler le script.

% lua -i -/dev/null un deux trois 
 Lua 5.1.3 Copyright (C) 1994-2008 Lua.org, PUC-Rio 
> print (. ..)
un deux trois
25
daurnimator

Lua stocke les arguments dans une table. Cette table est la table "arg". Vous pouvez accéder aux arguments passés à l'intérieur en utilisant arg [1], arg [2], ...

arg [0] est le nom du programme lua. arg [1] est le premier argument passé, arg [2] est le deuxième argument passé et ainsi de suite ...

5
Rahul

Si vous exécutez file.lua en cmd de freeswitch

freeswitch> luarun prog.lua arg1

Vous pouvez utiliser prog.lua:

#print(argv[1])

Et courir: $lua prog.lua arg1 (exécuté dans le dossier de script) Vous pouvez utiliser prong.lua:

#print(arg[1])
2
user3331079