はじめに
bashでユーザのキーボード入力を対話的に受け取って、yesと入力されたら後続の処理を実行する、noと入力されたら処理をキャンセルするbashスクリプトです。
yesと入力された場合、hello worldと表示します。
環境
実行環境はbash 2.3.1 + Amazon EC2(Amazon Linux)になります。
[ec2-user@example-ruby-sinatra-server ~]$ bash --version
GNU bash, バージョン 4.2.46(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[ec2-user@example-ruby-sinatra-server ~]$
ユーザのキーボード入力を対話的に受け取るbashスクリプト
ユーザからのキーボード入力を対話的に受け取るbashスクリプトを作成します。
[ec2-user@example-ruby-sinatra-server ~]$ vi example.sh
example.sh
#!/bin/bash
## ----------------------------
# ユーザからのキーボードの入力を受け取り、
# yes と入力されたらスクリプトを実行する、no と入力されたらスクリプトを終了します.
## ----------------------------
function ConfirmExecution() {
echo "----------------------------"
echo "スクリプトを実行しますか?"
echo " 実行する場合は yes、実行をキャンセルする場合は no と入力して下さい."
read input
if [ -z $input ] ; then
echo " yes または no を入力して下さい."
ConfirmExecution
elif [ $input = 'yes' ] || [ $input = 'YES' ] || [ $input = 'y' ] ; then
echo " スクリプトを実行します."
elif [ $input = 'no' ] || [ $input = 'NO' ] || [ $input = 'n' ] ; then
echo " スクリプトを終了します."
exit 1
else
echo " yes または no を入力して下さい."
ConfirmExecution
fi
}
# シェルスクリプトの実行を継続するか確認します。
ConfirmExecution
echo "----------------------------"
echo "hello world!"
スクリプトに実行権限を付けます。
[ec2-user@example-ruby-sinatra-server ~]$ chmod 755 example.sh
[ec2-user@example-ruby-sinatra-server ~]$
bashスクリプト実行例
作成したbashスクリプトを実行してみます。
bashスクリプトを実行したユーザがキーボードからyesと入力した場合、hello worldと表示します。
[ec2-user@example-ruby-sinatra-server ~]$ ./example.sh
----------------------------
スクリプトを実行しますか?
実行する場合は yes、実行をキャンセルする場合は no と入力して下さい.
yes
スクリプトを実行します.
----------------------------
hello world!
[ec2-user@example-ruby-sinatra-server ~]$
キーボードからnoと入力した場合、hello worldと表示せずに処理を終了します。
[ec2-user@example-ruby-sinatra-server ~]$ ./example.sh
----------------------------
スクリプトを実行しますか?
実行する場合は yes、実行をキャンセルする場合は no と入力して下さい.
no
スクリプトを終了します.
[ec2-user@example-ruby-sinatra-server ~]$
キーボードからyesまたはno以外が入力した場合、または何も入力しなかった場合、再度ユーザにyes or noの入力を要求します。
[ec2-user@example-ruby-sinatra-server ~]$ ./example.sh
----------------------------
スクリプトを実行しますか?
実行する場合は yes、実行をキャンセルする場合は no と入力して下さい.
test
yes または no を入力して下さい.
----------------------------
スクリプトを実行しますか?
実行する場合は yes、実行をキャンセルする場合は no と入力して下さい.
yes または no を入力して下さい.
----------------------------
スクリプトを実行しますか?
実行する場合は yes、実行をキャンセルする場合は no と入力して下さい.
no
スクリプトを終了します.
[ec2-user@example-ruby-sinatra-server ~]$
ちなみに、Rubyで同様の事を行うRubyスクリプトについても、以下にまとめてみました。
以上になります。