在ruby中反击vs系统

Nic*_*ilt 6 ruby

根据我在网上的所有读数,backtick和之间的区别system是返回的内容.backtick返回STDOUT而system收益truefalse.

我被告知他们都使用subshel​​l来执行操作.

但是我注意到另一个区别.

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

output = `aaa`
puts "output is: #{output}"
Run Code Online (Sandbox Code Playgroud)

上面代码的结果是

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

因此,似乎在backtick例外情况下提升到主程序.操作system吞下异常,主程序永远不会看到异常.

我正在使用ruby 1.9.3.

我的分析是对的吗?

更新:得到了答案.它在这里https://gist.github.com/3730986.

Dre*_*awn 1

从已编辑的问题正文中复制答案,以便从“未回答”过滤器中删除该问题:

得到答案了。在这里https://gist.github.com/3730986

〜按照nodejs99回答