Rubyプログラムを実行するときに、プログラム自身に与えた引数を Rubyプログラムから利用できる。たとえば、
% ./test.rb a b c d
のように起動した場合、与えた引数 `a', `b', `c', `d'
は、自動的に配列変数 ARGVに代入される。
具体的には、
| ARGV | |||
|---|---|---|---|
ARGV[0] | 
  ARGV[1] | 
  ARGV[2] | 
  ARGV[3] | 
 
"a" | 
  "b" | 
  "c" | 
  "d" | 
 
ARGV[0] = "a" ARGV[1] = "b" ARGV[2] = "c" ARGV[3] = "d"
というふうに値が格納される。これを利用すると、プログラム起動時に 与えた情報で動作を決定するものが作れる。
たとえば、1から指定した数までの総和を求めるときに、
% ./sum.rb 100
で100までの総和を求めるようなプログラム
(sum.rb)は以下のように書ける。
#!/usr/koeki/bin/ruby
# coding: utf-8
if ARGV[0] == nil
  STDERR.puts "起動時に指定した値までの自然数を全部足します."
  STDERR.puts "例: ./sum.rb 100  --- 1から100までの総和を求める."
  exit(1)
end
sum = 0
goal = ARGV[0].to_i	# 文字列なので整数に直す
goal.downto(1) do |x|
  sum += x
end
printf("1から%dまでの自然数の総和は%dです\n", goal, sum)
STDERRプログラム先頭で ARGV[0] が nil か
どうか比較しているが、これは対応する引数が与えられなかった場合の
判定である。コマンドラインで引数を指定しなかった場合(あるいは
個数が足りない場合)の処理も考慮する必要がある。
このように、プログラムを起動するときに利用者が起動方法を間違えた
場合には適切なメッセージを端末に出力する必要がある。そのような場合は
たんに printf するのではなく、
STDERRに対してprintfする
必要がある。たんに printf すると、
% ./sum.rb > hogehoge
のように起動した場合、エラーメッセージさえもファイル
(上記の場合hogehoge)に書かれるため、
利用者の目に触れずに終わってしまう。
Rubyプログラムの実行が終わるときに、プログラム全体が「うまくいった」 か「うまくいかなかったか」をシステムに対して教えることができる。この情報 のことを終了ステータスという。
終了ステータスは整数で表し、
とする決まりになっている。sum.rb
でエラーメッセージを表示したあと、
exit(1)
としているのは、システムに対し「予定した仕事ができずに終わっちゃった」 ことを示すためである。
exitは、直ちにプログラムの実行を終了し
システムに終了コードを返す。プログラム実行中にエラーが発生した
場合などはプログラムを継続する意味がなくなるため、exitを利
用して終了する。