#!/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 {init,get,up,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] case( cmd ) when "init" counter = 0 when "get" counter = counter_load() when "up" 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() data = IO.read(DATA_FILENAME, 4) counter = data.unpack("i")[0] return counter end main(ARGV)