コマンドを実行する前に「Yes/No」の応答を求めるシェル

UNIX3-100

Yes/Noの応答入力を求めるシェル

シェルでコマンドを実行する前に、Yes/Noの応答入力を求めるシェルを作成してみます。処理内容は、for でファイルをechoする処理で、コマンドを実行する前に「Y/N」の入力を求める仕様です。

シェル内容は以下となります。

YN_CHECK()
{
  read YN?"echo $FILE_NAME があります。 実行しますか? [Y/N] "
  echo
  YN=`echo ${YN} |tr "[a-z]" "[A-Z]"`
  case $YN in
    Y) echo "$FILE_NAME があります。";;
    *) echo "中止しました。";;
  esac
}

for FILE_NAME in `ls ./files`;do
  echo
  YN_CHECK
done

 

応答を求めるロジックは、関数「YN_CHECK」です。大文字「Y」であればコマンドを実行し、それ以外「*」はechoで「中止しました。」を実行します。tr コマンドで小文字は大文字に変換しています。

実行するとこのようになります。

$ for_echo.sh

echo AAA があります。 実行しますか? [Y/N] Y

AAA があります。

echo BBB があります。 実行しますか? [Y/N] y

BBB があります。

echo CCC があります。 実行しますか? [Y/N] n

中止しました。

echo DDD があります。 実行しますか? [Y/N] a

中止しました。

echo EEE があります。 実行しますか? [Y/N] N

中止しました。

echo FFF があります。 実行しますか? [Y/N] @

中止しました。
$

 

大文字「Y」か小文字「y」を入力した場合は変数をechoする処理が実行され、それ以外の文字が入力された場合は「中止しました。」をechoした結果となっています。

オペミス防止対策などに使えます。

 

 

 

 


サブコンテンツ

このページの先頭へ