se si vuole "dal nome" argomento, con i valori di default, è possibile utilizzare questa riga di comando (da un appli giocattolo che ho fatto):
erl -pa "./ebin" -s lavie -noshell -detach -width 100 -height 80 -zoom 6
lavie: inizio non fa altro che avviare un'applicazione erlang :
-module (lavie).
-export ([start/0]).
start() -> application:start(lavie).
che a sua volta avviare l'applicazione in cui ho definito il valore di default per i parametri, ecco l'app.src (tondo per cemento armato build):
{application, lavie,
[
{description, "Le jeu de la vie selon Conway"},
{vsn, "1.3.0"},
{registered, [lavie_sup,lavie_wx,lavie_fsm,lavie_server,rule_wx]},
{applications, [
kernel,
stdlib
]},
{mod, { lavie_app, [200,50,2]}}, %% with default parameters
{env, []}
]}.
quindi, nel codice dell'applicazione, è possibile utilizzare init: get_argument/1 per ottenere il valore associato a ciascuna opzione se è stata definita nella riga di comando.
-module(lavie_app).
-behaviour(application).
%% Application callbacks
-export([start/2, stop/1]).
%% ===================================================================
%% Application callbacks
%% ===================================================================
start(_StartType, [W1,H1,Z1]) ->
W = get(width,W1),
H = get(height,H1),
Z = get(zoom,Z1),
lavie_sup:start_link([W,H,Z]).
stop(_State) ->
% init:stop().
ok.
get(Name,Def) ->
case init:get_argument(Name) of
{ok,[[L]]} -> list_to_integer(L);
_ -> Def
end.
Definitivamente più complesso di proposta @Hynek, ma ti dà una maggiore flessibilità, e trovo la linea di comando meno opaco.
Grazie Hynek ... fantastico –
Curiosamente, ho [foo, bar] non ["foo", "bar"] – quantumpotato
@quantumpotato: Note '-run'. Secondo la manpage di 'erl', tutti gli argomenti sono passati come stringhe. Quale versione stai usando? Anche allora sarebbe un bug perché questo non dovrebbe cambiare la versione in versione. Romperebbe gli script esistenti. –