Ruby の実行方法について学ぼうとして、Ruby でコマンドを実行する 5 つの方法に関するこのブログ記事を見つけました http://mentalized.net/journal/2010/03/08/5_ways_to_run_commands_from_ruby/
作成者はファイル err.rb を作成します。このファイルは 2 行を出力します。1 行は STDOUT に、もう 1 行は 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
バックティックを使用して実行しようとしてアクセス許可エラーが発生する理由と、バックティックを使用して実行する一般的な目的を誰かが説明できますか。