Kar*_*oll 2 ruby bash command-line-arguments optionparser
我有以下命令:
ruby SaveAllDatabases.rb 192.168.0.15 1024 -r #0-D --non-interactive
Run Code Online (Sandbox Code Playgroud)
这是一个相当基本的命令,我用一些命令行参数运行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
Run Code Online (Sandbox Code Playgroud)
如果我从正则表达式中取出哈希/磅(#)符号,则命令运行正常.我已经完成了一个测试,并且命令行似乎没有在#进入argv数组之后传递任何内容.
为什么会这样,我该如何解决呢?
查看已发布代码的突出显示.请注意#及其后的所有内容是灰色的?这是你在bash中的评论方式.#之后的所有内容都被视为评论.
echo "This will show on the screen" # This is a comment, it's ignored
Run Code Online (Sandbox Code Playgroud)
解决方案是引用评论:
ruby SaveAllDatabases.rb 192.168.0.15 1024 -r '#0-D' --non-interactive
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |