根据我在网络上的所有阅读材料,backtick
和system
之间的区别是返回的内容。 backtick
返回STDOUT,system
返回true
或false
。
我被告知他们都使用subshell来执行操作。
但是我注意到了另一个区别。
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。
答案 0 :(得分:1)