Ruby:コマンドラインから引数を取ってくる方法

初心者向け:引数の基本その2

今回はターミナルなどのコマンドラインから引数を取ってくる方法を解説します。

コマンドラインの引数というのは、例えばターミナル上で

ruby arg.rb apple

の"apple"のように、コマンドの後に入力された部分です。この引数は一体どのような働きをするのでしょうか。それを知るため、Rubyで以下のようなプログラムを作ります。

puts ARGV

このプログラムの名前をarg.rbとしておきます。そうして、先ほどの

ruby arg.rb apple

コマンドラインに入れて実行します。すると、コマンド引数の部分であるappleと表示されます。何が起きているのでしょうか。

コマンドの引数の文字列は、組み込み定数ARGVに配列として自動的に格納されます。定義しなくても勝手にARGVというRubyで用意されている定数(変数と違い、書き換えしない入れ物)に入るので、少し戸惑うかもしれません。

コマンドラインの引数を2つにしてみます。

ruby arg.rb apple baseball

# =>apple

    baseball

arg.rbのputsprintに変えてから実行してみます。

ruby arg.rb apple baseball

# =>["apple","baseball"]

定数ARGVにコマンドライン引数が、配列として順番に入っていることがわかります。 ついでに、定数はメソッドの中からでも使うことができます。

def arg
  print ARGV
end

arg #=>["apple","baseball"]

また、コマンドラインの引数は、ARGVの配列に文字列として入るということに注意してください。 数字も文字列になっているため、計算に使いたいときは数値に変換する必要があります。

コマンドラインruby arg.rb 1 2で実行した場合 

=>["1","2"] ※数字も文字列として配列に入っている。