Ruby 是否可以捕获系统命令的输出并将其重定向?
我想做的是:Ruby 是否可以捕获系统命令的输出并将其重定向?,ruby,shell,pipe,Ruby,Shell,Pipe,我想做的是: 运行ruby脚本 执行shell命令的 并将其重定向到脚本外部可访问的命名管道 从系统外壳中,从该管道读取 也就是说,让Ruby脚本捕获一些命令输出,并以一种可以从脚本外部连接到的方式重定向它 我想指出的是,脚本不能简单地启动和退出,因为它是一个REPL。其思想是,使用REPL可以运行命令并将其输出重定向到其他地方以使用它。使用abort和退出消息,将消息传递给STDERR(脚本将失败,退出代码为1)。您可以通过这种方式传递此shell命令输出 这可能不是唯一(或最好)的方法,但它
我想指出的是,脚本不能简单地启动和退出,因为它是一个REPL。其思想是,使用REPL可以运行命令并将其输出重定向到其他地方以使用它。使用
abort
和退出消息,将消息传递给STDERR(脚本将失败,退出代码为1)。您可以通过这种方式传递此shell命令输出
这可能不是唯一(或最好)的方法,但它在过去对我很有效
[编辑]
您还可以将输出重定向到一个文件(使用标准方法),并在ruby脚本之外读取该文件
require 'open3'
stdin, stderr, status = Open3.capture3(commandline)
stdin.chomp #Here, you should ge
例如,如果有人想使用,您可以通过stdin.chomp获得输出,不幸的是,这对我来说不起作用,因为脚本需要继续运行。我应该提到这是一个回复。我会更新这个问题。谢谢事实上,我想可能是的!我开始尝试一种命名的管道,我认为这实际上可能是最好的选择。谢谢