如何将文件中的输入作为标准输入传输到在 shell 中运行的 erlang 程序以及独立运行?
我有一个文件hr.erl
,我从 shell 编译它。它里面有一个函数,它接受来自标准输入的输入,使用io:fread()
. 我写了一个带有守卫的案例表达式,如果它匹配{ok, [0]}
它应该终止。而不是0
,我实际上需要它eof
。
- 在shell中运行时如何发送eof?
- 我在每一行都有一个
inp.txt
包含值1
2
3
的文件。0
如何使用<
管道运算符传递它?有什么类似的erl -hr <inp.txt
吗?我可以将它通过管道传输到外壳中的标准输入吗?
到目前为止,这是我的程序(更新为包含eof
)。
-module(hr).
-export([main/0]).
r(L) ->
case io:fread("", "~d") of
eof ->
io:format("eof~n", []),
ok;
{ok, [0]} ->
io:format("terminate~n", []),
lists:reverse(L);
{ok, [N]} ->
io:format("inp ~p~n", [N]),
r([N|L])
end.
main() -> r([]).
从壳
1> c(hr).
{ok,hr}
2> hr:main().
1
inp 1
2
inp 2
3
inp 3
0
terminate
[1,2,3]
谢谢。