while 循环 shell 脚本中的允许值

allowed values in while loop shell script

我正在尝试为 运行找出读取输入的 while 循环的最佳方法,如果输入了其他内容,输入只能是 Y 或 N(大写或小写) (y 或 n 除外)然后 运行 再次循环....如果它的空白也 运行 再次循环....下面是我想出的,但我不是那不是最佳解决方案,但似乎不起作用...

read ANS
while [[ $ANS = "" ]]; do
echo "This Cannot be Blank, Please enter answer again"
read ANS
done


while :
do
    echo "Enter Y for yes, N for no"
    read system
    case "${system}" in
        [yY]) export ANS=YES ;;
        [pP]) export ANS=NO ;;
    esac
done
 while :;do 
     read -p "Enter Y for yes, N for no: " request; 
     if [[ $request == [YynN] ]];then 
          break;
     fi;
done