4

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

バックティックを使用して実行しようとしてアクセス許可エラーが発生する理由と、バックティックを使用して実行する一般的な目的を誰かが説明できますか。

4

2 に答える 2

5

実行する権限を追加してみてください。「chmod +x that_file_name」を使用して、「./file」形式を使用して実行します。「ファイル」には実行権限が必要です

ruby には実行権限があり、単にそのファイルを読み取るため、ruby を実行すると実行されます。

これを試して

localhost:sites mike$ chmod +x err.rb
于 2012-10-28T08:22:08.733 に答える
0

ファイルを実行可能にする必要があります。これは、シェルから実行できます。

chmod +x err.rb

次に、シェルから次のように呼び出すことができます

./err.rb

またはIRBから

`./err.rb`

その上で実行することもできますruby

`ruby err.rb`

これは、さまざまなバックティック、システム、および exec メソッドの優れたリソースでもあります。

于 2012-10-28T08:25:11.310 に答える