【发布时间】:2012-10-28 08:19:39
【问题描述】:
在尝试了解 Ruby 执行方法时,我发现了这篇关于在 Ruby 中运行命令的五种方法的博文http://mentalized.net/journal/2010/03/08/5_ways_to_run_commands_from_ruby/
作者创建一个文件err.rb,输出两行,一行在STDOUT上,另一行在STDERR上
#!/usr/bin/env ruby
puts "out"
STDERR.puts "error"
他尝试运行它的第一种方式是使用 Kernal#`(反引号)
>> `./err.rb`
err
=> "out\n"
这说明了当使用反引号运行时
STDERR is output, but not captured STDOUT is captured
当我试图在我的系统上复制它时,我得到了一个权限错误
localhost:sites mike$ `./err.rb`
-bash: ./err.rb: Permission denied
我试过 sudo ./err.rb 没有任何变化。
我可以运行ruby err.rb,但这会产生与作者得到的结果不同的结果。即通过运行 ruby err.rb 我得到
out
error
有人可以解释为什么我在尝试使用反引号运行它时遇到权限错误,以及使用反引号运行它的总体目的是什么。
【问题讨论】:
标签: ruby