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

Bengt Kleberg bengt.kleberg@REDACTED
Tue May 6 13:13:04 CEST 2008


Greetings,

You are correct, it does depend upon the shell. I did not see you
mentioning this is the original email. That is why I asked.

I use rc (see http://swtch.com/plan9port/man/man1/rc.html or if you are
patient http://cm.bell-labs.com/sys/doc/rc.html).


bengt

On Tue, 2008-05-06 at 10:35 +0200, Hynek Vychodil wrote:
> There is not difference between ' and " from called program point of
> view. Both strings are passed as one argv zero byte terminated string.
> Program can't get knowledge which sort of quotes was used. There is
> only difference from shell's point of view. What sort of shell you
> use?
> 
> On Tue, May 6, 2008 at 7:08 AM, Bengt Kleberg
> <bengt.kleberg@REDACTED> wrote:
>         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
>         > <erlang-questions_efine@REDACTED> 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
>         > erlang-questions@REDACTED
>         > http://www.erlang.org/mailman/listinfo/erlang-questions
>         
>         _______________________________________________
>         erlang-questions mailing list
>         erlang-questions@REDACTED
>         http://www.erlang.org/mailman/listinfo/erlang-questions
>         
> 
> 
> 
> -- 
> --Hynek (Pichi) Vychodil




More information about the erlang-questions mailing list