加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:05:47 所属栏目:百科 来源:网络整理
导读:我正在使用来暂停我的脚本的输出,直到用户点击Enter键.如果我没有传递任何参数到我的脚本,那么它的工作正常.但是,如果我传递任何参数到我的脚本,然后死亡与以下错误: ruby main.rb -imain.rb:74:in `gets': No such file or directory - -i (Errno::ENOENT)
我正在使用来暂停我的脚本的输出,直到用户点击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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读