LoginSignup
7
5

More than 5 years have passed since last update.

Rubyでユーザのキーボード入力を対話的に受け取るRubyスクリプト

Last updated at Posted at 2016-10-15

はじめに

Rubyでユーザのキーボード入力を対話的に受け取って、yesと入力されたら後続の処理を実行する、noと入力されたら処理をキャンセルするRubyスクリプトです。

yesと入力された場合、hello worldと表示します。

環境

実行環境はRuby 2.3.1 + Amazon EC2(Amazon Linux)になります。

[ec2-user@example-ruby-sinatra-server ~]$ which ruby
/usr/local/rbenv/shims/ruby
[ec2-user@example-ruby-sinatra-server ~]$ 

[ec2-user@example-ruby-sinatra-server ~]$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
[ec2-user@example-ruby-sinatra-server ~]$ 

ユーザのキーボード入力を対話的に受け取るRubyスクリプト

ユーザからのキーボード入力を対話的に受け取るRubyスクリプトを作成します。

[ec2-user@example-ruby-sinatra-server ~]$ vi example.rb
example.rb
#!/bin/env ruby

## ----------------------------
# ユーザからのキーボードの入力を受け取り、
# yes と入力されたらスクリプトを実行する、no と入力されたらスクリプトを終了します.
## ----------------------------

class ConfirmExecutionClass

  def initialize

    puts <<-EOT
----------------------------
スクリプトを実行しますか?
スクリプトを実行する場合は yes、実行をキャンセルする場合は no と入力して下さい.
    EOT

  end

  def get_keyboard_input_yes_no

    case gets.chomp
      when "yes", "YES", "y"
        puts "  スクリプトを実行します."
      when "no", "NO", "n"
        puts "  スクリプトを終了します."
        exit 1
      else
        puts "  yes または no を入力して下さい."
        confirm = ConfirmExecutionClass.new
        confirm.get_keyboard_input_yes_no
    end
  end

end

confirm = ConfirmExecutionClass.new()
confirm.get_keyboard_input_yes_no

puts "----------------------------"
puts "hello world!"

Rubyスクリプト実行例

作成したRubyスクリプトを実行してみます。

Rubyスクリプトを実行したユーザがキーボードからyesと入力した場合、hello worldと表示します。

[ec2-user@example-ruby-sinatra-server ~]$ ll example.rb
-rw-r--r-- 1 ec2-user ec2-user 1059 10月 16 12:23 example.rb
[ec2-user@example-ruby-sinatra-server ~]$ 
[ec2-user@example-ruby-sinatra-server ~]$ ruby example.rb 
----------------------------
スクリプトを実行しますか?
  スクリプトを実行する場合は yes、実行をキャンセルする場合は no と入力して下さい.
yes
  スクリプトを実行します.
----------------------------
hello world!
[ec2-user@example-ruby-sinatra-server ~]$ 

キーボードからnoと入力した場合、hello worldと表示せずに処理を終了します。

[ec2-user@example-ruby-sinatra-server ~]$ ruby example.rb 
----------------------------
スクリプトを実行しますか?
  スクリプトを実行する場合は yes、実行をキャンセルする場合は no と入力して下さい.
no
  スクリプトを終了します.
[ec2-user@example-ruby-sinatra-server ~]$ 

キーボードからyesまたはno以外が入力した場合、または何も入力しなかった場合、再度ユーザにyes or noの入力を要求します。

[ec2-user@example-ruby-sinatra-server ~]$ ruby example.rb 
----------------------------
スクリプトを実行しますか?
  スクリプトを実行する場合は yes、実行をキャンセルする場合は no と入力して下さい.
test
  yes または no を入力して下さい.
----------------------------
スクリプトを実行しますか?
  スクリプトを実行する場合は yes、実行をキャンセルする場合は no と入力して下さい.

  yes または no を入力して下さい.
----------------------------
スクリプトを実行しますか?
  スクリプトを実行する場合は yes、実行をキャンセルする場合は no と入力して下さい.

  yes または no を入力して下さい.
----------------------------
スクリプトを実行しますか?
  スクリプトを実行する場合は yes、実行をキャンセルする場合は no と入力して下さい.
no
  スクリプトを終了します.
[ec2-user@example-ruby-sinatra-server ~]$ 

備考

ちなみに、bashで同様の事を行うbashシェルスクリプトについても、以下にまとめてみました。


以上になります。

7
5
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5