我有一個簡單的腳本處理來自STDIN的行。有時會出現一個異常 - 一些UTF-8轉換錯誤 - 我想檢查變量,導致錯誤的原因。我用下面的語法在我的文件(讓我們稱之爲filter.rb),但我從來沒有撬提示:如何用Pry測試類似過濾器的Ruby腳本?
#!/usr/bin/ruby
require "pry"
n=0
while line=STDIN.gets do
begin
n=n+1
raise "an exception" if n==2
rescue => e
binding.pry
end
end
當我發出:
cat data.txt|ruby filter.rb
我在屏幕上看到:
5: while line= STDIN.gets do
6: begin
7: n=n+1
8: raise "an exception" if n==2
9: rescue => e
=> 10: binding.pry
11: end
12: end
但事實上,我所得到的只是一個bash提示符,而不是一個Pry命令提示符。
如果我運行「ruby filter.rb」,並從鍵盤提供標準輸入,並以Ctrl + D結尾,它就可以工作。如果我管道形成文件,它不會再工作。也許我的txt文件包含一些導致Pry退出的文本或字符。 – Konstantin
你的文件是否有換行符? – vgoff
創建一個較小的文件,或增加if語句中的數字2。我相信該文件的管道正在導致撬接受額外的線。而不是使用STDIN使用文件來測試這個。 – vgoff