我有这个脚本在执行时将用户放到 IRB 会话中。
一切都很好,但是当我使用 *nix 管道获取输入(例如使用cat
)时,IRB 会话立即结束。
我可以将脚本(我们称之为 myscript.rb)简化为以下内容:
需要'irb' 如果 $stdin.stat.size > 0 @text = $stdin.read 别的 @text="什么都没有" 结尾 ARGV.清除 IRB.start
当执行如下:ruby myscript.rb
时,我最终进入 IRB 会话(如预期的那样)。
但是(假设foo.txt
存在于 中cwd
):cat foo.txt | ruby myscript.rb
将只打印 IRB 提示,然后关闭 IRB 会话(我被放到 $bash 中)。
任何已知的解决方法或想法?
顺便说一句:它在 ruby 1.8.7 和 1.9.2 上具有相同的行为。