如何将一个命令的输出通过unix管道传递到Elixir的Mix Task中?

时间:2019-04-25 22:04:27

标签: elixir stdin mix

我想将cat命令的输出“传递”到Elixir混合任务中,并将其作为二进制文件保存在变量中。

我已经尝试使用IO.gets/1,但是它只读取输出的第一行。

cat textfile.txt | mix print
defmodule Mix.Tasks.Print do
  use Mix.Task

  def run(_argv) do
    Task.async(fn -> IO.gets("") end)
    |> Task.await(t)
    |> IO.puts() # prints the first line
  end
end

我想在Elixir中的二进制变量中保存整个文件的内容,并将其打印到控制台,但是我只有第一行。我希望Elixir有一些内置的解决方案,可以在EOF上结束。

1 个答案:

答案 0 :(得分:2)

我正在寻找一个IO.read/2函数。

compile 'com.google.firebase:firebase-core:9.0.2'