我想用ARGF这样。

# file.rb
if ARGF.???
  puts ARGF.read
else
  puts "no redirect."
end

$ echo "Hello world" | ruby file.rb
Hello world

$ ruby file.rb
no redirect.

我无需等待用户输入即可完成操作。我尝试过eof?closed?没有帮助。有任何想法吗?

注意我被误解了ARGF。请参阅下面的评论。

最佳答案

基本上,您将检查#filename。一种方法是:

if ARGF.filename != "-"
  puts ARGF.read
else
  puts "no redirect."
end

这是更完整的形式:
#!/usr/bin/env ruby
if ARGF.filename != "-" or (not STDIN.tty? and not STDIN.closed?)
  puts ARGF.read
else
  puts "No redirect."
end

其他:
#!/usr/bin/env ruby
if not STDIN.tty? and not STDIN.closed?
  puts STDIN.read
else
  puts "No redirect."
end

关于ruby - 如何在Ruby中检查ARGF是否为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25358253/

10-11 17:26