2012-10-19 3 views
5

वेब पर मेरे सभी रीडिंग पर बेस backtick और system के बीच का अंतर वापस लौटाया गया है। backtick STDOUT लौटाता है जबकि systemtrue या false देता है।रूबी

और मुझे बताया गया कि दोनों ऑपरेशन करने के लिए सबहेल का उपयोग करते हैं।

हालांकि मैं एक और अंतर देख रहा हूं।

output = system('aaa') 
puts "output is: #{output}" 

output = `aaa` 
puts "output is: #{output}" 

उपरोक्त कोड का परिणाम

$ ruby test.rb 
output is: 
lab.rb:4:in ``': No such file or directory - aaa (Errno::ENOENT) from test.rb:4:in `<main>' 

तो यह backtick के मामले अपवाद मुख्य कार्यक्रम के लिए उठाए गए हैं में लगता है। ऑपरेशन system अपवाद निगलता है और मुख्य कार्यक्रम अपवाद को कभी नहीं देखता है।

मैं रूबी 1.9.3 का उपयोग कर रहा हूं।

क्या मेरा विश्लेषण सही है?

अद्यतन: उत्तर मिला। यह यहां https://gist.github.com/3730986 है।

+3

जवाब [5 रूबी से आदेशों को चलाने के तरीके] (http://mentalized.net/journal/2010/03/08/5_ways_to_run_commands_from_ruby/) पर एक नजर डालें; रूबी से यूनिक्स कमांड चलाने के प्रत्येक तरीके के विनिर्देशों को बताता है। –

+0

@PrakashMurthy मैंने सवाल पूछने से पहले देखा। यह आलेख मुख्य कार्यक्रम में अपवादों के बारे में कुछ भी नहीं कहता है या नहीं। धन्यवाद। –

+1

[रुबी में निष्पादन कमांड] (http://blog.bigbinary.com/2012/10/18/backtick-system-exec-in-ruby.html) एक अच्छा लेख है जो अपवाद हैंडलिंग के बारे में बात करता है। –

उत्तर

1

संपादित सवाल शरीर से जवाब प्रतिलिपि बनाई जा रही है ताकि "अनुत्तरित" फिल्टर से इस सवाल को दूर करने के:

जवाब मिल गया। यह यहां https://gist.github.com/3730986 है।

~ प्रति nodejs99