backtick
根据我在网上的所有阅读资料,和之间的区别system
是返回的内容。backtick
返回 STDOUT 而system
返回true
or 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。