Если вы хотите «назвали» аргументом, с возможными значениями по умолчанию, вы можете использовать эту командную строку (с игрушечной примой я сделал):
erl -pa "./ebin" -s lavie -noshell -detach -width 100 -height 80 -zoom 6
Лави: начало ничего не делает больше, чем запуск приложения Erlang :
-module (lavie).
-export ([start/0]).
start() -> application:start(lavie).
, который, в свою очередь запустить приложение, в котором я определил значение по умолчанию для параметров, здесь app.src (арматурных сборки):
{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, []}
]}.
, то в коде приложения вы можете использовать init: get_argument/1, чтобы получить значение, связанное с каждой опцией, если оно было определено в командной строке.
-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.
Определённо более сложным, чем @Hynek предложение, но это дает вам больше гибкости, и я нахожу, что командная строка менее непрозрачным.
Thanks Hynek ... awesome –
Любопытно, что я получаю [foo, bar] not ["foo", "bar"] – quantumpotato
@quantumpotato: Примечание '-run'. Согласно man-странице 'erl', все аргументы передаются как строки. Какую версию вы используете? Даже тогда это будет ошибка, потому что это не должно изменять версию до версии. Это нарушит существующие сценарии. –