シェルスクリプト-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

関連ページ