dej*_*jay 12 ruby command system
在ruby中隐藏系统命令的结果有多容易?例如,我的一些脚本运行
system "curl ..."
Run Code Online (Sandbox Code Playgroud)
我不希望看到下载的结果.
tad*_*man 11
如果您愿意,可以使用更复杂的popen3分别控制STDIN,STDOUT和STDERR:
Open3.popen3("curl...") do |stdin, stdout, stderr, thread|
# ...
end
Run Code Online (Sandbox Code Playgroud)
如果你想让某些流静音,你可以忽略它们,或者如果重定向或解释那个输出很重要,你仍然可以使用它.
最简单的方式除了popen:
使用%x而不是系统.它会自动管道
rval = %x{curl ...} #rval will contain the output instead of function return value
Run Code Online (Sandbox Code Playgroud)手动管道到/ dev/null.在UNIX中工作,如系统,而不是Windows
system "curl ... > /dev/null"
Run Code Online (Sandbox Code Playgroud)要在system不修改命令的情况下使其正常工作:
system('curl ...', :err => File::NULL)
Run Code Online (Sandbox Code Playgroud)