我有以下命令:
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 数组中。
为什么会这样,我该如何解决?