如何在Crystal-lang中获取Process.exec的输出?

时间:2019-04-19 12:31:43

标签: shell process exec crystal-lang

我需要以Crystal中的字符串形式获取Process.exec的输出(而不是Process.run)。能做到吗?

我尝试过

Process.exec base, args

但是它仅将其放入控制台。我想把它放在一个变量中。

1 个答案:

答案 0 :(得分:1)

正如注释中已经阐明的那样,您无法捕获使用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