当我将参数传递给我的脚本时,使用gets()给出"没有这样的文件或目录"错误

ads*_*dsa 37 ruby

嗨我正在制作一个简单的ruby脚本,在我使用gets.chomp和参数创建表单时,问题是当gets.chomp我使用脚本时,在应用参数时返回错误test.

代码:

#!usr/bin/ruby

def formulario(quien)
    while (1)
        print "[+] Word : "
        word = gets.chomp
        print quien + " -> " + word
    end
end

quien = ARGV[0]

formulario(quien)
Run Code Online (Sandbox Code Playgroud)

错误:

[+] Word : C:/Users/test/test.rb:8:in `gets': No such file or directory @ rb_sysopen - test (Errno::E
NOENT)
        from C:/Users/test/test.rb:8:in `gets'
        from C:/Users/test/test.rb:8:in `formulario'
        from C:/Users/test/test.rb:17:in `<main>'
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

Mar*_*oij 78

看起来您希望用户通过读取一行来输入一些输入STDIN,最好的方法是通过调用STDIN.gets而不是gets.所以你的线路变成:

word = STDIN.gets.chomp
Run Code Online (Sandbox Code Playgroud)

这被记录为IO.gets.STDIN是一个实例IO.

现在,你正在执行Kernel.gets,这会做一些不同的事情(强调我的):

返回(并指定$ _)ARGV(或$*)中文件列表中的下一行,如果命令行中没有文件,则返回标准输入.

似乎表现得像个STDIN.gets如果ARGV是空的,但不是一回事,因此混乱.

  • @theTinMan我有完全相同的错误,并指定`STDIN`为我工作. (11认同)
  • 奇怪,我不知道 `ARGV` 干扰了 `.gets`;这个答案也对我有用 (2认同)