वेब पर मेरे सभी रीडिंग पर बेस backtick
और system
के बीच का अंतर वापस लौटाया गया है। backtick
STDOUT लौटाता है जबकि system
true
या 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 है।
जवाब [5 रूबी से आदेशों को चलाने के तरीके] (http://mentalized.net/journal/2010/03/08/5_ways_to_run_commands_from_ruby/) पर एक नजर डालें; रूबी से यूनिक्स कमांड चलाने के प्रत्येक तरीके के विनिर्देशों को बताता है। –
@PrakashMurthy मैंने सवाल पूछने से पहले देखा। यह आलेख मुख्य कार्यक्रम में अपवादों के बारे में कुछ भी नहीं कहता है या नहीं। धन्यवाद। –
[रुबी में निष्पादन कमांड] (http://blog.bigbinary.com/2012/10/18/backtick-system-exec-in-ruby.html) एक अच्छा लेख है जो अपवाद हैंडलिंग के बारे में बात करता है। –