根据我在网上的所有读数,backtick和之间的区别system是返回的内容.backtick返回STDOUT而system收益true或false.
我被告知他们都使用subshell来执行操作.
但是我注意到另一个区别.
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.