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

Ruby 是否可以捕获系统命令的输出并将其重定向?,ruby,shell,pipe,Ruby,Shell,Pipe,我想做的是: 运行ruby脚本 执行shell命令的 并将其重定向到脚本外部可访问的命名管道 从系统外壳中,从该管道读取 也就是说,让Ruby脚本捕获一些命令输出,并以一种可以从脚本外部连接到的方式重定向它 我想指出的是,脚本不能简单地启动和退出,因为它是一个REPL。其思想是,使用REPL可以运行命令并将其输出重定向到其他地方以使用它。使用abort和退出消息,将消息传递给STDERR(脚本将失败,退出代码为1)。您可以通过这种方式传递此shell命令输出 这可能不是唯一(或最好)的方法,但它

我想做的是:

  • 运行ruby脚本
  • 执行shell命令的
  • 并将其重定向到脚本外部可访问的命名管道
  • 从系统外壳中,从该管道读取
  • 也就是说,让Ruby脚本捕获一些命令输出,并以一种可以从脚本外部连接到的方式重定向它


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

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

    这可能不是唯一(或最好)的方法,但它在过去对我很有效

    [编辑]

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

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

    例如,如果有人想使用,您可以通过stdin.chomp获得输出,不幸的是,这对我来说不起作用,因为脚本需要继续运行。我应该提到这是一个回复。我会更新这个问题。谢谢事实上,我想可能是的!我开始尝试一种命名的管道,我认为这实际上可能是最好的选择。谢谢