コマンドを実行する前に「Yes/No」の応答を求めるシェル
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した結果となっています。
オペミス防止対策などに使えます。