2010年10月20日

Rubyの標準入出力

----------------------------------------------------------------------------------
ブログを見て頂いてありがとうございます。
このブログ以外にWebサイトを公開しました。
内容はこのブログの流用が多いですが、今後はもっと体系的でわかりやすくする予定です。
もちろん、このブログも続けて行きます。
----------------------------------------------------------------------------------

言語:Ruby

今回はRubyの標準入出力です。標準入出力には標準入力・標準出力・標準エラー出力があります。C言語にも標準入出力がありましたが、Rubyのそれは少しことなります。
オブジェクト指向言語のRubyには、IOオブジェクトというものがあり、これらのオブジェクトがレシーバとなっていろいろなメソッドを呼び出す形式になっています。
それでは、順番に説明します。

1. 標準入力


主にキーボードからの入力を標準入力といいます。標準入力を扱うオブジェクトは、組み込み定数のSTDINとグローバル変数の$stdinです。これらのオブジェクトにはgetsメソッドがあり、入力した文字を返します。
以下は使用例です。
# STDINを使った標準入力
print(">")
str = STDIN.gets

puts("Your input is #{str}")

# $stdinを使った標準入力
print(">")
str = $stdin.gets

puts("Your input is #{str}")

>の後に文字を入力してEnterを押すと、入力した文字が変数strに格納されて、putsメソッドでコンソールに出力されます。

2. 標準出力


通常、標準出力はコンソールへの出力になります。標準出力は組み込み定数のSTDOUTとグローバル変数の$stdoutを用いて行います。これらのオブジェクトのputsやprintといったメソッドを使って、出力を行います。
以下は使用例です。
# STDOUTを使った標準出力
STDOUT.puts("STDOUT's output")

# $stdoutを使った標準出力
$stdout.puts("$stdout's output")

コンソールには
STDOUT's output
$stdout's output

と出力されます。

3. 標準エラー出力


コンソールへの出力には、標準エラー出力というものもあります。主に、プログラムにエラーメッセージを吐かせる場合に使います。
使用例は以下のようになります。
# STDERRを使った標準エラー出力
STDERR.puts("STDERR's output")

# $stderrを使った標準エラー出力
$stderr.puts("$stderr's output")

実行すると
STDERR's output
$stderr's output

と表示されます。

4. 出力のリダイレクト


標準出力と標準エラー出力はどちらもコンソールに出力されてしまい違いがわかりにくいので、出力をリダイレクトさせて、それぞれの出力を確認します。
以下のスクリプトをリダイレクトでファイルに出力させます。
ファイル名はstdio.rbにしました。
# STDOUTを使った標準出力
STDOUT.puts("STDOUT's output")

# $stdoutを使った標準出力
$stdout.puts("$stdout's output")

# STDERRを使った標準エラー出力
STDERR.puts("STDERR's output")

# $stderrを使った標準エラー出力
$stderr.puts("$stderr's output")


4-1. 標準出力をリダイレクトしてファイルへ出力
ターミナルから次のように実行します。
% ruby stdio.rb > stdout.txt

標準出力はコンソールに出力されず、stdout.txtに書き出されます。

4-2. 標準エラー出力をリダイレクトしてファイルへ出力
ターミナルから次のように実行します。
% ruby stdio.rb 2> stderr.txt

標準エラー出力はコンソールに出力されず、stderr.txtに書き出されます。


    • 0 Comment |
    • 0 Trackback |
    • このエントリーをはてなブックマークに追加
    • Edit

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/nbhkst-tech/51474772 

トラックバックはまだありません。

コメントはまだありません。

コメントする。

絵文字
 
星  顔