在ruby中反击vs系统

时间:2012-10-19 13:58:37

标签: ruby

根据我在网络上的所有阅读材料,backticksystem之间的区别是返回的内容。 backtick返回STDOUT,system返回truefalse

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

但是我注意到了另一个区别。

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吞下异常,主程序永远不会看到异常。

我正在使用ruby 1.9.3。

我的分析是对的吗?

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

1 个答案:

答案 0 :(得分:1)

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

  

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

〜每nodejs99

回答