#!/usr/local/bin/ruby if ARGV[0] == nil STDERR.puts "ファイルをバックアップします。" STDERR.puts "./backup.rb ファイル名" exit(1) end # ***** (A) ***** # ARGV[0]がコピー元ファイル。読めるかチェック。 if !test(?r, ARGV[0]) then STDERR.printf("%s ファイルは読めません\n", ARGV[0]) exit(2) end n=1 # 拡張子。1からスタート。 while true # 元の名前とnからバックアップファイル名を生成 backup = sprintf("%s.%d", ARGV[0], n) if !test(?r, backup) # 存在しなければ break # ループを抜ける end n += 1 end open(ARGV[0], "r") do |src| open(backup, "w") do |dst| while s=src.gets dst.print s end end end STDERR.printf("[%s] --> [%s]\n", ARGV[0], backup) # ***** (B) *****