Erlang命令行

时间:2014-01-14 00:33:38

标签: erlang erlang-shell erl

我需要将两个参数传递给我的Erlang代码。它在Erlang shell中运行良好。

2> crop:fall_velocity(x,23).
  21.23205124334434

但是如何在没有Erlang shell的情况下运行Erlang代码。像普通的python,c程序。 ./program_name(不传递$ 1 $ 2参数)。

我正在尝试这个

erl -noshell -s crop fall_velocity(x,20) -s init stop

但它会出现意外的令牌错误。

2 个答案:

答案 0 :(得分:6)

作为documentation states-s将所有参数作为一个原子列表提供,-run执行相同但作为字符串列表。如果要使用任意参数计数和类型调用任意函数,则应使用-eval

$ erl -noshell -eval 'io:format("test\n",[]),init:stop()'
test
$

答案 1 :(得分:4)

您可以使用escript从命令行运行Erlang脚本。在该脚本中,您应该创建一个main函数,该函数将一个参数数组作为字符串。

#!/usr/bin/env escript

main(Args) ->
  io:format("Printing arguments:~n"),
  lists:foreach(fun(Arg) -> io:format("Got argument: ~p~n", [Arg]) end,Args).

输出:

./escripter.erl hi what is your name 5 6 7 9
Printing arguments:
Got argument: "hi"
Got argument: "what"
Got argument: "is"
Got argument: "your"
Got argument: "name"
Got argument: "5"
Got argument: "6"
Got argument: "7"
Got argument: "9"