是否可以捕获系统命令的输出并重定向?

时间:2014-08-09 17:13:14

标签: ruby shell pipe

我想做的是:

  1. 运行ruby脚本......
  2. 执行shell命令
  3. 并将其重定向到脚本
  4. 外部可访问的命名管道
  5. 来自系统shell,从该管道读取
  6. 也就是说,让Ruby脚本捕获一些命令输出并以可以从脚本外部连接的方式重定向它?

    我想提一下,脚本不能简单地启动和退出,因为它是一个REPL。我们的想法是使用REPL,您可以运行命令并将其输出重定向到其他位置以使用它。

2 个答案:

答案 0 :(得分:1)

使用abort和退出消息,将消息传递给STDERR(脚本将失败,退出代码为1)。您可以通过这种方式传递此shell命令输出。

这可能不是唯一(或最好)的方式,但它在过去对我有用。

[编辑]

您还可以将输出重定向到文件(使用标准方法),并在ruby脚本之外读取该文件。

答案 1 :(得分:0)

require 'open3'
stdin, stderr, status = Open3.capture3(commandline)
stdin.chomp #Here, you should ge

如果有人想使用你,你可以通过stdin.chomp获得输出

相关问题