标签: erlang-shell

Erlang:从命令行调用erl -eval永远不会退出

我有一个简单的Erlang命令,我想通过它来调用erl -eval(编译erlydtl模板,如erlydtl页面所述).

当我从shell交互式地执行它时一切正常并且命令立即退出:

erl -pa ebin deps\erlydtl\ebin Eshell V5.9.3.1  (abort with ^G) 
1> erlydtl:compile('templates/tictactoe.dtl',tictactoe_dtl,[{out_dir,'ebin'}]).
ok
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试通过erl -eval(我想从.bat文件运行)时:

erl -pa ebin deps\erlydtl\ebin -noshell -eval erlydtl:compile('templates/tictactoe.dtl',tictactoe_dtl,[{out_dir,'ebin'}])
Run Code Online (Sandbox Code Playgroud)

然后该命令完成其工作(模板已编译)但它不会退出,我需要使用ctrl + c手动终止shell进程(我在Windows下工作).

我只想要命令编译模板并退出.可能是什么问题?

更新:

一种解决方案可能是在命令结尾附加exit()调用,但最后我得到以下结果:

erl -pa ebin deps\erlydtl\ebin -noshell -eval erlydtl:compile('templates/tictactoe.dtl',tictactoe_dtl,[{out_dir,'ebin'}]),exit(success).
{"init terminating in do_boot",success}

Crash dump was written to: erl_crash.dump
init terminating in do_boot (success)
Run Code Online (Sandbox Code Playgroud)

错误信息非常恼人,所以我仍然不喜欢这个解决方案.

erlang erl erlang-shell

0
推荐指数
1
解决办法
2209
查看次数

以纯模式运行erlang代码

我无法在纯模式下运行以下代码.我尝试时显示错误消息:

警告:此系统未配置为本机代码编译.escript:异常错误:没有函数子句匹配test_ escript _1383_ 893414 _479613:main([])(./ test,第5行)函数escript:run/2(escript.erl,第747行)从escript调用:start/1(escript.erl,第277行)调用init:start_it/1调用init:start_em/1

如何配置我的系统以在纯模式下运行它?

码:

#!/usr/bin/env escript

-mode(native). %% to fun faster

main([NStr]) ->
    N = list_to_integer(NStr),
    IJ = [{I, J} || I <- lists:seq(1, N), J <- lists:seq(1, N)],
    lists:foreach(fun({I, J}) -> put_data(I, J, true) end, IJ),
    solve(N, 1, [], 0).

solve(N, J, Board, Count) when N < J ->
    print(N, Board),
    Count + 1;
solve(N, J, Board, Count) ->
    F = fun(I, Cnt) ->
            case get_data(I, J) of
                true  ->
                    put_data(I, J, false),
                    Cnt2 …
Run Code Online (Sandbox Code Playgroud)

erlang ubuntu erlang-shell

0
推荐指数
1
解决办法
1006
查看次数

Erlang试图评估一个字符串

我正在尝试动态评估Erlang术语

启动Erlang

basho-catah% erl
Erlang R16B03 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.4  (abort with ^G)
Run Code Online (Sandbox Code Playgroud)

创建一个术语

1> {a,[b,c,d]}.
{a,[b,c,d]}
Run Code Online (Sandbox Code Playgroud)

尝试在同一个词中扫描

2> {ok, Tokens, _ } = erl_scan:string("{a,[b,c,d]}").
{ok,[{'{',1},
     {atom,1,a},
     {',',1},
     {'[',1},
     {atom,1,b},
     {',',1},
     {atom,1,c},
     {',',1},
     {atom,1,d},
     {']',1},
     {'}',1}],
    1}


3> Tokens.
[{'{',1},
 {atom,1,a},
 {',',1},
 {'[',1},
 {atom,1,b},
 {',',1},
 {atom,1,c},
 {',',1},
 {atom,1,d},
 {']',1},
 {'}',1}]
Run Code Online (Sandbox Code Playgroud)

但它无法解析该标记化字符串.

4> Foo = erl_parse:parse(Tokens).
{error,{1,erl_parse,["syntax error before: ","'{'"]}}
Run Code Online (Sandbox Code Playgroud)

我有什么想法我做错了吗?

erlang evaluation term erlang-shell

0
推荐指数
1
解决办法
691
查看次数

Erlang从erl中生成简单的进程..没有这样的进程或端口

在Erlang控制台中运行此代码时

Pid = spawn(fun() -> "foo" end),link(Pid),receive X -> X end.
Run Code Online (Sandbox Code Playgroud)

我收到以下错误.

** exception error: no such process or port
 in function  link/1
    called as link(<0.71.0>)```
Run Code Online (Sandbox Code Playgroud)

erlang erlang-shell

0
推荐指数
1
解决办法
297
查看次数

Erlang打印十六进制而不是整数

我一直试图解决问题几个小时,对erlang来说很新

lists:sublist([6,9,15,24,39,6,96],7,1).
Run Code Online (Sandbox Code Playgroud)

我希望这打印"100"而不是"d"

我在这里做错了什么?

erlang erlang-shell

0
推荐指数
1
解决办法
256
查看次数

Erlang shell无法显示表达式的结果

可能重复:
Erlang shell问题

我在我的macbook pro上安装了erlang 5.9.2,在ubuntu上安装了一台笔记本电脑.但他们都没有同样的问题:

我打开终端并键入erl,我可以看到erlang的版本,所以它运行良好.但我键入了2 + 3的快递,我看不到结果.像这样

1>2 + 3
1>

1>a = 2 + 3
1>a
1>
Run Code Online (Sandbox Code Playgroud)

有谁可以帮助解决这个问题?

多谢!

erlang erlang-shell

-1
推荐指数
1
解决办法
145
查看次数

标签 统计

erlang ×6

erlang-shell ×6

erl ×1

evaluation ×1

term ×1

ubuntu ×1