読者です 読者をやめる 読者になる 読者になる

Sinatraのあらかると

記録することで、環境構築で悩まない。

短文で、Rubyでシェルを書く[ARGV編]

TwitterRubyでシェルを書くブログを書くように話していたのですが、

仕事にて想うこともあり、なかなか書き起こせませんでした。

今日は、短文で書こうと思います。

私が作成したGithubレポジトリ内で、

MITライセンスとして公開しているzinbeijettのコード内をみると、

module~module_function~endとcase~when~else~endと正規表現とARGVを使っています。

このARGVこそ、コマンドライン上でオプションを渡せる機能であり、

0→1,1→2...

のように何番目が指定できます。

正規表現は指定された文字列にマッチするかどうかを判別するために使ってます。

例えばzinbeijett -vと実行したとき、

これをしないと-vでなくても-でもvでも実行されてしまうためです。

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
# vim: filetype=ruby

シェルの一番上に、以上の文字列を追加するとまた便利かもしれません。

module Sample
def san
puts "これはサンプルです"
end
def ver
puts "0.0.1"
end
module_function :san,:ver
end

v = /\A[-][v]\z/

one = ARGV[0]

case
when one.nil?
Sample.san
when one.match(v)
Sample.ver
else
puts "違うオプションを選んでください!"
end

こんな風に書くと、シェルにあるバージョンや文字列を表示することができます。

Sample.rbとして保存後、

ruby Sample.rb

出力:これはサンプルです

ruby Sample.rb -v

出力:0.0.1

と出力されるはず。簡単ですが、お疲れ様でした。

参考サイト

https://github.com/takkii/zinbeijett/blob/master/bin/zinbeijett

参考図書

Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~

Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~

Copyright © 2007-2017 Takayuki Kamiyama. All Rights Reserved.