君の瞳はまるでルビー - Ruby 関連まとめサイト

標準入力に入力があるかどうかの判断

最終更新: 2015-03-31 (火) 21:53:18 (1688d)

イディオム

説明

以下のように書きます。

if File.pipe?(STDIN) || File.select([STDIN], [], [], 0) != nil then
  # 標準入力に入力がある
else
  # 標準入力に入力がない(キーボード入力である)
end

標準入力経由でのスタンダードな情報入力には以下の3種類があります。

  • パイプ
    • コマンドラインにて「echo test | ruby example.rb」と実行すると STDIN.gets で 'test' を取得できる。
  • リダイレクト
    • コマンドラインにて「ruby example.rb < stdin.txt」と実行すると STDIN.gets で stdin.txt ファイルの中身を参照できる。
  • キーボード入力
    • STDIN.gets でキーボード入力を待つ。

標準入力の種類を判断する方法は以下の通りです。

  • パイプ
    • File.pipe?(STDIN) が true な場合
  • リダイレクト
    • File.select([STDIN], [], [], 0) != nil が true な場合
  • キーボード入力
    • パイプでもリダイレクトでもない場合

これを利用して標準入力に何らかの入力があるかどうかを判断できます。

コメント

本ページの内容に関して何かコメントがある方は、以下に記入してください。

コメントはありません。 コメント/idiom/judge_stdin

お名前: