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