Làm cách nào để ẩn kết quả khỏi lệnh hệ thống trong ruby? Ví dụ: một số tập lệnh của tôi chạykết quả lệnh hệ thống ẩn trong ruby
system "curl ..."
và tôi không muốn xem kết quả tải xuống.
Cảm ơn!
Làm cách nào để ẩn kết quả khỏi lệnh hệ thống trong ruby? Ví dụ: một số tập lệnh của tôi chạykết quả lệnh hệ thống ẩn trong ruby
system "curl ..."
và tôi không muốn xem kết quả tải xuống.
Cảm ơn!
Bạn có thể sử dụng phức tạp hơn popen3 để có thể kiểm soát STDIN, STDOUT và stderr riêng nếu bạn thích:
Open3.popen3("curl...") do |stdin, stdout, stderr, thread|
# ...
end
Nếu bạn muốn im lặng một số con suối, bạn có thể bỏ qua chúng, hoặc nếu điều quan trọng là để chuyển hướng hoặc giải thích đầu ra đó, bạn vẫn có sẵn.
Bạn có thể cần phải "yêu cầu" open3 '". Sử dụng "myvarname = stdin.read" nếu bạn muốn xử lý đầu ra. – DanielaWaranie
Để sử dụng các kết quả đầu ra nâng cao như stdin, stderr v.v. thì không sao, nhưng chỉ để có được kết quả đầu ra của bảng điều khiển, đó là một phụ thuộc có thể được loại bỏ bằng ví dụ: '% x {bash-command arg1 arg2}' – siegy22
@RaVeN Một ưu điểm của 'popen3' hoặc' system' là bạn có thể phá vỡ các đối số đúng cách: 'system (" example "," --file ", user_supplied_filename)' an toàn từ vỏ tiêm. 'system (" example --file # {user_supplied_filename} ")' là ** cực kỳ nguy hiểm ** và không nên thực hiện. – tadman
Đơn giản nhất là để chuyển hướng stdout :)
system "curl ... 1>/dev/null"
# same as
`curl ... 1>/dev/null`
cách dễ nhất khác hơn popen:
Sử dụng% x thay vì hệ thống. Nó sẽ tự động đường ống
rval = %x{curl ...} #rval will contain the output instead of function return value
Thủ công ống tới/dev/null. Làm việc trong UNIX như hệ thống, không phải Windows
system "curl ... > /dev/null"
Lưu ý rằng curl đã có một 'chế độ --silent' bạn có thể sử dụng. – Phrogz
Đó chính xác là những gì tôi cần. Cảm ơn! – dejay
có thể trùng lặp của [Ngăn chặn đầu ra của lệnh chạy bằng phương pháp 'hệ thống' trong khi chạy nó trong tập lệnh ruby] (http://stackoverflow.com/questions/1960838/suppressing-the-output-of-a-command- run-using-system-method-while-running-it-i) –