キーボードからのユーザ入力を一行分取得するには、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 モジュールを使用すると、プロンプトを表示しながらユーザ入力を取得する処理を簡単に記述することができます。
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)