微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当参数传递给我的ruby脚本时,为什么会发生错误?

我正在使用来暂停我的脚本的输出,直到用户点击Enter键.如果我没有传递任何参数到我的脚本,那么它的工作正常.但是,如果我传递任何参数到我的脚本,然后死亡与以下错误
ruby main.rb -i
main.rb:74:in `gets': No such file or directory - -i (Errno::ENOENT)
    from main.rb:74:in `gets'
    ...

错误消息显示了我传递给脚本的参数.为什么会看到ARGV?

我使用OptionParser解析我的命令行参数.如果我使用解析!而不是解析(所以它从参数列表中删除它解析的东西),那么应用程序工作正常.

所以看起来像是因为某些原因从ARGV读书.为什么?这是预期的吗有没有办法让它不这样做(gets()没有帮助).

解决方法

Ruby将自动将解析的参数视为文件名,然后打开并读取使输入可用于ARGF($<)的文件.认情况下,从ARGF读取.绕过那个:
$stdin.gets

有人建议您可以使用STDIN而不是$stdin,但通常为better to use $stdin.

另外,从ARGV捕获您想要的输入后,可以使用:

ARGV.clear

然后,如果没有阅读可能无法阅读的文件,您将可以自由获取.

原文地址:https://www.jb51.cc/ruby/272640.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐