シェルスクリプト-YesNoの入力
シェルスクリプトでYes/Nowの入力要求
シェルスクリプトでは「read」コマンドで入力要求を行います。
readコマンドについて
readコマンドは標準入力から文学列を読み込み、変数にセットします。
シェルスクリプトでユーザからの回答によって処理を分岐させたい場合に利用されます。
read [オプション]
readコマンドのオプションは以下の通りです。
-s | 入力を出力しない |
-p | 入力を促す文学列をプロンプトとして出力する |
-n | 標準入力から指定の文字数を読み込むとプロンプトを出力 |
-d | 入力の終了を指定する |
-a | 配列変数に値をセットする |
-r | 入力時のバックスラッシュを無効化する |
-t | 入力の確定をn秒だけ待つ |
-t | タイムアウトをn秒にセットする |
Yes/Nowの入力要求サンプルスクリプト
「read」コマンドで「Y,y,N,n」の四文字を標準入力するように記述します。
入力待ち用の関数を作成し、戻り値で呼び出し元に状態を返します。
#!/bin/sh
function confirm {
MSG=$1
while :
do
echo -n "${MSG} [Y/N]: "
read ans
case $ans in
[yY]) return 0 ;;
[nN]) return 1 ;;
esac
done
}
confirm 'Ready?'
echo "return=${?}"
yes入力の確認
yesでなかったら処理を止めるシェルスクリプトは以下のようになります。
echo -n “Is it OK to continue? [yes/no]”
read answer
if [ "$answer" != "yes" ]; then
echo "Stoped"
exit;
fi