我是Ruby的新手,來自Python背景。爲了幫助學習這門語言,我正在移植一個現有的Python腳本,以便我可以並排比較。到目前爲止,我有一些代碼,並且爲什麼'nil'打印到控制檯時感到困惑。下面的代碼:Ruby放在救援中顯示nil
#!/usr/bin/ruby
require 'date'
backup_dirs = ['/backups/db', '/backups/log']
backup_dirs.each do |backup_dir|
Dir.glob(backup_dir + '/' + '*.*.*.*.*.*').each do |filename|
begin
creation_date = DateTime.strptime(filename.split('.')[3], '%m%d%Y%H%M')
rescue
puts "Skipping #{filename}, invalid file."
end
end
puts 'File is okay.'
end
如果DateTime.strptime
方法拋出一個異常,rescue
運行和puts
打印出弦細。除了在nil
之後。我「谷歌搜索」,發現puts
返回nil
。但爲什麼只在rescue
區域顯示,而不在File is okay.
行顯示。
I.e.一個例子rescue
輸出將是:
Skipping /backups/log/fs.server.dir.999999999999.14.log, invalid file.
nil
而且,我怎麼讓它停止顯示該控制檯?我確信這是一種基本的語言,對於這門語言來說只是非常新穎的東西,所以任何見解都會受到重視。
謝謝 - 湯姆
你可以提供更多關於你如何運行這段代碼的細節?你複製/粘貼到控制檯? – BroiSatse 2014-10-03 20:30:23
嗨,對不起...忽略了細節。我只是在Linux服務器的命令行上通過SSH會話來運行它......而不是通過IRB或任何東西。 – user164266 2014-10-03 20:37:26
仍然無法重現。這是完整的代碼,還是隻是一個片段?除非你告訴它,否則'nil's不會出現在輸出中(並且你必須真的想在那裏看到零,因爲'puts nil'將會打印空行) – BroiSatse 2014-10-03 20:41:08