gpt4 book ai didi

ruby - 为什么在将参数传递给我的 ruby​​ 脚本时会抛出错误?

转载 作者:数据小太阳 更新时间:2023-10-29 06:37:37 26 4
gpt4 key购买 nike

我正在使用 gets 暂停脚本的输出,直到用户按下回车键。如果我不向我的脚本传递任何参数,那么它就可以正常工作。但是,如果我将任何参数传递给我的脚本,则会因以下错误而死掉:

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 来解析我的命令行参数。如果我使用 parse! 而不是 parse(因此它会从参数列表中删除它解析的内容),那么应用程序可以正常工作。

所以看起来 gets 出于某种原因正在从 ARGV 读取数据。为什么?这是预期的吗?有没有办法让它不这样做(执行 gets() 没有帮助)。

最佳答案

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

$stdin.gets

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

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

ARGV.clear

然后你就可以自由gets如果没有它读取您可能不打算读取的文件。

关于ruby - 为什么在将参数传递给我的 ruby​​ 脚本时会抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2166862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com