Как получить вывод Process.exec в crystal-lang? - PullRequest
0 голосов
/ 19 апреля 2019

Мне нужно получить вывод Process.exec (не Process.run) в виде строки в кристалле.Можно ли это сделать?

Я пробовал

Process.exec base, args

Но он только выводит его на консоль.Я хотел бы поместить его в переменную.

1 Ответ

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

Как уже разъяснено в комментариях, вы не можете захватить выходные данные процесса, выполненного с использованием Process.exec, но есть способы выполнить процесс и захватить его выходные данные.

Самый простой - обратные галочки:

output = `echo "Hello world"`

В более сложных сценариях (например, вам нужно отдельно захватывать стандартный вывод и вывод стандартных ошибок, нужно также получать его статус или иметь больший контроль над его выполнением), вы можете использовать что-то вроде этого:

stdout = IO::Memory.new
process = Process.new("echo", ["Hello world"], output: stdout)
status = process.wait
output stdout.to_s
...