Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash while循环shell脚本中允许的值_Bash_Shell_Sh - Fatal编程技术网

Bash while循环shell脚本中允许的值

Bash while循环shell脚本中允许的值,bash,shell,sh,Bash,Shell,Sh,我正在试图找出运行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

我正在试图找出运行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

四个问题:一,。循环中没有中断,因此它当然是一个无限循环;2.no的情况是
[pP]
?打字错误3.我认为没有理由导出
ANS
。4.阅读
ANS
而不使用它却立即覆盖它有什么意义?你可以用
Yes
Yes
以及
[yY]*
(你的
Pp
(修复为
Nn
)对选项和陷阱进行长时间的详细讨论。它是针对Python的,但其中很多也适用于Bash,或者只是一般的编程。如果用户输入
Yes
,该怎么办?添加一个
*
怎么样?或者,只需测试
${request,,}
,然后
[yn]*
?请随意编辑…必须运行…做我需要的事情,如果有人输入(空白)它将运行到循环中,当输入了除y或y或n或n之外的其他内容时,它将进入循环中。。。
 while :;do 
     read -p "Enter Y for yes, N for no: " request; 
     if [[ $request == [YynN] ]];then 
          break;
     fi;
done