14

在 ruby​​ 中隐藏系统命令的结果有多容易?例如,我的一些脚本运行

system "curl ..." 

而且我不想看到下载的结果。

4

4 回答 4

11

如果您愿意,可以使用更复杂的popen3分别控制 STDIN、STDOUT 和 STDERR:

Open3.popen3("curl...") do |stdin, stdout, stderr, thread|
  # ...
end

如果您想使某些流静音,您可以忽略它们,或者如果重定向或解释该输出很重要,您仍然可以使用它。

于 2012-06-06T20:51:59.600 回答
11

system要在不修改命令的情况下使其正常工作:

system('curl ...', :err => File::NULL)

资源

于 2018-05-15T14:12:38.097 回答
5

除了 popen 最简单的方法:

  1. 使用 %x 代替系统。它会自动管道

    rval = %x{curl ...}       #rval will contain the output instead of function return value
    
  2. 手动管道到 /dev/null。在类似 UNIX 的系统中工作,而不是在 Windows 中工作

    system "curl ... > /dev/null"
    
于 2012-06-06T21:04:43.660 回答
2

最简单的一种是重定向标准输出 :)

system "curl ... 1>/dev/null"
# same as
`curl ... 1>/dev/null`
于 2012-06-06T20:56:57.877 回答