Как UNIX транслировать вывод одной команды в микс-задачу Elixir? - PullRequest
1 голос
/ 26 апреля 2019

Я хочу "передать" вывод команды cat в задачу Elixir Mix и сохранить ее в переменной в виде двоичного файла.

Я уже пытался использовать 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 Ответ

2 голосов
/ 26 апреля 2019

Есть функция IO.read / 2 , которую я искал.

defmodule Mix.Tasks.Print do
  use Mix.Task

  def run(_argv) do
    IO.read(:all)
    |> IO.puts() # prints all lines
  end
end
...