STDIN でキーボードからの入力を取得する
キーボードからのユーザー入力を一行分取得するには、STDIN.gets を使用します。
取得した入力の末尾には改行文字が残ったままであることに注意してください。
改行文字は chomp を利用して削除できます。
line = STDIN.gets
p line #=> "ABC\n"
p line.chomp #=> "ABC"
キーボードからの入力を繰り返し取得したい場合は、下記のような while ループで処理できます。
Ctrl-Z などで入力を終了させたときに、IO#gets が nil を返すことを利用してループを終了しています。
while line = STDIN.gets
puts line
end
readline モジュールでキーボードからの入力を取得する
readline モジュールを使用すると、プロンプトを表示しながらユーザー入力を取得する処理を簡単に記述できます。
require 'readline'
while line = Readline.readline('> ')
puts line
end$ ruby sample.rb
> AAA
AAA
> BBB
BBB
>
また、readline モジュールでキーボード入力を取得している最中は、Ctrl-A によるカーソルジャンプなど、Emacs 風のキーボードショートカットが使えるようになります。
さらに、下記のように第 2 引数を true にして呼び出すことで、Ctrl-P、Ctrl-N で入力履歴をたどれるようになります。
line = Readline.readline('> ', true)