私は次のコマンドを持っています:
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配列の#の後に何も渡していないようです。
これはなぜですか、どうすれば回避できますか?