私は、次のコマンドを持っている:コマンドラインでargsを使用すると、このコマンドが失敗するのはなぜですか?
ruby SaveAllDatabases.rb 192.168.0.15 1024 -r #0-D --non-interactive
それは私はいくつかのコマンドライン引数でRubyスクリプトを実行するにはかなり基本的なコマンドです。 -r
引数は正規表現(#0-D)です。
標準のWindowsコマンドプロンプトを使用してWindows上でこのコマンドを実行すると、すべてが期待どおりに動作しますが、同じコマンドをLinux上で実行すると同じバージョンのrubyがインストールされます。
/usr/lib/ruby/1.8/optparse.rb:451:in `parse': missing argument: -r (OptionParser::MissingArgument)
from /usr/lib/ruby/1.8/optparse.rb:1295:in `parse_in_order'
from /usr/lib/ruby/1.8/optparse.rb:1254:in `catch'
from /usr/lib/ruby/1.8/optparse.rb:1254:in `parse_in_order'
from /usr/lib/ruby/1.8/optparse.rb:1248:in `order!'
from /usr/lib/ruby/1.8/optparse.rb:1339:in `permute!'
from /usr/lib/ruby/1.8/optparse.rb:1360:in `parse!'
from SaveAllDatabases.rb:256
ハッシュ/ポンド(#)記号を正規表現の外に出すと、コマンドはうまく動作します。私はテストを行ったし、コマンドラインはargv配列の#の後ろに何も通らないように見える。
これはなぜ、どのようにして動作させることができますか?
良い点
ソリューションは、コメントを引用することです。最もシンプルなものは非常に頻繁に見て最も難しいものです。ありがとう! –