Rubyスクリプトの実行時に ruby filename.rb 60 のように,コマンドラインARGV
配列オブジェクトに文字列として格納されているので,ARGV[0]
, ARGV[1]
, ARGV[2]
, ...
を参照すれば良い.
名前を入力すれば,その人に挨拶するプログラムを作成してみよう.
cmdline1.rb
# コマンドライン引数を取を表示する
# 実行時は次のように,ファイル名の後に引数(文字)を追加する
# ruby cmdline1.rb Koichiro
#
name = ARGV[0] # コマンドライン引数を変数に格納(文字列として)
puts "Hello, #{name}!"
C:\Users\lecture\Documents\ruby>ruby cmdline1.rb Koichiro ⏎
Hello, Koichiro!
C:\Users\lecture\Documents\ruby>
次に,2つの数値を入力してその和を出力するプログラムを作成してみよう.
cmdline2.rb
# コマンドライン引数を取得して,計算結果を表示する
# 実行時は次のように,ファイル名の後に引数(数値)を2つ追加する
# ruby cmdline2.rb 3 5
#
a = ARGV[0].to_i # コマンドライン引数の文字列を整数(integer)に変換し,変数に格納
b = ARGV[1].to_i
puts "#{a} + #{b} = #{a + b}"
C:\Users\lecture\Documents\ruby>ruby cmdline2.rb 3 5 ⏎
3 + 5 = 8
C:\Users\lecture\Documents\ruby>
上の例の5行目と6行目で .to_i
メソッドを用いなかった場合にどのような出力が得られるか試してみよう.
cmdline3.rb
# コマンドライン引数を取得して,計算結果を表示する
# 実行時は次のように,ファイル名の後に引数(数値)を2つ追加する
# ruby cmdline3.rb 3 5
#
a = ARGV[0] # コマンドライン引数の文字列を変数に格納
b = ARGV[1]
puts "#{a} + #{b} = #{a + b}" # 文字列どうしの足し算の結果はどのようになる?
C:\Users\lecture\Documents\ruby>ruby cmdline3.rb 3 5 ⏎
3 + 5 = 35
C:\Users\lecture\Documents\ruby>