我不知道一个通用的方法,我有兴趣知道一个。在我这边,我试图弄清楚 shell 的期望,在你的例子中,shell “认为”你正在输入一个字符串:
第一个$" 被解释为字符'"',因此下一个'"' 被解释为字符串的开头,shell 在开始解释下一个点之前等待字符串的结尾作为表达式的结尾。
输入".,你会得到一个新的提示。
编辑
当shell直接检测到错误时,在计算表达式之前,提示号不会改变,因为没有结果要存储:
1> $"X".
1> ".
* 1: syntax error before: X
1> lists:seq(1,5).
[1,2,3,4,5]
2>
如果在输入评估期间检测到错误,则提示编号会增加。从 shell 的角度来看,成功的评估和错误的评估没有区别,在这两种情况下,评估都会返回一个结果:
2> lists:seq("1","5").
** exception error: no function clause matching lists:seq("1","5") (lists.erl, line 243)
3>
每次评估的结果由shell存储,可以使用v(N)检索:
3> v(1).
[1,2,3,4,5]
4> v(2).
{'EXIT',{function_clause,[{lists,seq,
["1","5"],
[{file,"lists.erl"},{line,243}]},
{erl_eval,do_apply,6,
[{file,"erl_eval.erl"},{line,674}]},
{shell,exprs,7,[{file,"shell.erl"},{line,686}]},
{shell,eval_exprs,7,[{file,"shell.erl"},{line,641}]},
{shell,eval_loop,3,
[{file,"shell.erl"},{line,626}]}]}}
5>