#!/usr/bin/env ruby # coding: utf-8 # ファイルに値を保存するカウンタ(Ruby) # ~yas/syspro/file/file-counter-ruby.rb DATA_FILENAME = "file-counter-value.data" $comname = $0 def usage() printf("Usage$ %s {get,inc,set newvalue}\n", $comname) printf("Data file: %s\n", DATA_FILENAME) exit( 1 ) end def main(argv) usage() if( argv.length() < 1 ) cmd = argv[0] counter = 0 case( cmd ) when "get" counter = counter_load() when "inc" counter = counter_load() counter += 1 when "set" usage() if( argv.length() != 2 ) newvalue = argv[1].to_i() counter = newvalue else usage() end printf("%d\n", counter) counter_save(counter) if( cmd != "get" ) end def counter_save(counter) data = [counter].pack("i") # signed int IO.binwrite(DATA_FILENAME, data) end def counter_load() counter = 0 begin data = IO.read(DATA_FILENAME, 4) counter = data.unpack("i")[0] rescue Errno::ENOENT # nop end return counter end main(ARGV)