LoginSignup
5

More than 5 years have passed since last update.

posted at

updated at

Organization

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

はじめに

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シェルスクリプトについても、以下にまとめてみました。


以上になります。

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
What you can do with signing up
5