Ruby 从作为参数给定的文件中读取

Ruby gets reading from file given as argument

我有一个 ruby 脚本,它是 运行 和 ruby myscr.rb ./text_file.txt,它使用 gets 读取输入并将其写入文件,但是 gets 似乎从文件中读取而不是终端输入。如何强制它以与 gets?

相同的方式从终端获取输入

Kernel#gets 是故意这样实现的(尽管我在 Ruby 工作了很多年,但它仍然让我感到惊讶):

Returns (and assigns to $_) the next line from the list of files in ARGV (or $*), or from standard input if no files are present on the command line.

要仅从终端读取通过标准输入流进入脚本的输入,您可以直接在 $stdin:

上使用 gets 方法
File.open(ARGV.first, "w") do |f|
  f.puts($stdin.gets)
end