[erlang-questions] How to start an erlang applications from the command line non-interactively?

Bengt Kleberg <>
Tue May 6 07:08:45 CEST 2008


Greetings,

Are you sure about
erl -s foo Jarrod 12345 "This is a string"
resulting in
Name: 'Jarrod', Int: 12345, Str: "This is a string"
?

On my machine I have to use
erl -s foo Jarrod 12345 'This is a string'

Note the ' instead of ".


When choosing between -s and -run, IMHO -run is better integrated with
unix than -s (C does not have atoms).


bengt

On Mon, 2008-05-05 at 17:54 -0400, Jarrod Roberson wrote:
> 
> 
> On Mon, May 5, 2008 at 5:36 PM, Edwin Fine
> <> wrote:
>         > I have a function start(Port, Htdocs) that I want to call
>         with 8888,
>         > "C:/htdocs" and I can't figure out what the appropriate
>         syntax should be.
>         
>         This can be nasty to get right. It depends on how the command
>         line
>         interprets characters like single quote and double quote.
>         It also depends on whether you use -s or -run.
>         
>         -s interprets all function arguments as atoms, so your program
>         will
>         get all the values as atoms. You will usually need to write a
>         special
>         MFA to convert the atoms to the actual types of the parameters
>         desired. Note that all arguments get passed in a single list
>         when
>         called like this (see start_cmd_line/3).
>         
>         -run interprets all function arguments as strings, so your
>         program
>         will get all the values as string. You will often have to
>         write a
>         special MFA to convert the strings to the actual types of the
>         parameters desired.
>         
>         For example:
>         
>         -module(foo).
>         -export([start_cmd_line/1, start/3]).
>         
>         start_cmd_line([NameAtom, IntValue, StrValue]) when
>         is_atom(NameAtom),
>         is_atom(IntValue), is_atom(StrValue) ->
>            Name = NameAtom, % Not really necessary because NameAtom is
>         already an atom
>            Int = list_to_integer(atom_to_list(IntValue)), % Could
>         throw an exception
>            Str = atom_to_list(StrValue),
>            start(Name, Int, Str).
>         
>         start(Name, Int, Str) ->
>            io:format("Name: ~p, Int: ~p, Str: ~p~n", [Name, Int,
>         Str]),
>           % Etc
>           ok.
>         
>         If you started the above by
>         
>         erl -s foo Jarrod 12345 "This is a string"
>         
>         you would get an output something like this:
>         Erlang (BEAM) emulator version 5.6.2 [source] [64-bit] [smp:4]
>         [async-threads:0] [hipe] [kernel-poll:false]
>         
>         Name: 'Jarrod', Int: 12345, Str: "This is a string"
>         Eshell V5.6.2  (abort with ^G)
>         1>
>         
>         Hope this helps.
> 
> thanks that clears things up greatly. 
> 
> 
> _______________________________________________
> erlang-questions mailing list
> 
> http://www.erlang.org/mailman/listinfo/erlang-questions




More information about the erlang-questions mailing list