Bash 避免用户输入错误
大家好,提前谢谢 我有个问题要问你。 在我为管理Jboss应用程序集群的启动/关闭而编写的shell脚本中,我使用了一个函数来回答过程中的各种问题,该函数告诉脚本该怎么做Bash 避免用户输入错误,bash,shell,Bash,Shell,大家好,提前谢谢 我有个问题要问你。 在我为管理Jboss应用程序集群的启动/关闭而编写的shell脚本中,我使用了一个函数来回答过程中的各种问题,该函数告诉脚本该怎么做 function ThreeOptions { ACT=0 read -n 1 -s answ case ${answ:0:1} in n|N) echo "Operation skipped" ABRT=2 ;; e|E|x|X) echo "Operation aborted
function ThreeOptions
{
ACT=0
read -n 1 -s answ
case ${answ:0:1} in
n|N) echo "Operation skipped"
ABRT=2
;;
e|E|x|X) echo "Operation aborted"
ABRT=3
CloseProcedure
;;
y|Y|*) echo "...ok..."
ACT=1
;;
esac
}
该函数是这样编写的,因此字母的单个压力将选择该选项,“回车/回车”(实际上每隔一个键)将使用默认值
如何防止read命令无意中读取双/多个键盘输入(也称为草率手)
前
如果我按“yy”,我注意到我正在回答实际问题,下一个也是
PS:第一个问题,所以我希望它是可以理解的,并且我没有写太多:)如果您使用的是
bash
,您可以尝试bash案例中的结构
例如,使用+([y])|+([y])|*)
而不是y | |*)
编辑:在使用案例
之前,请记住在函数中调用shopt-s extglob
,如果您使用的是bash
,您可以在bash案例
结构中尝试
例如,使用+([y])|+([y])|*)
而不是y | |*)
编辑:在使用案例
之前,请记住在函数中调用shopt-s extglob
在打印选项之前,您不能刷新输入吗?e、 用read-t1-n1000丢弃
?是的……这正是我想要的!谢谢!刚刚添加了-s,这样可能的多个输出就不会显示在屏幕上读取-t1-n1000-s丢弃您不能在打印选项之前刷新输入吗?e、 用read-t1-n1000丢弃
?是的……这正是我想要的!谢谢!只是添加了-s,这样可能的多个输出就不会显示在屏幕上读取-t1-n1000-s丢弃UHM…似乎不起作用,我必须逃避什么吗?只有使用[y]|+[y]|*)
它似乎可以正常工作,但主要的问题仍然存在,在使用caseUhm之前,按“yyy”实际上会给出3个答案来设置函数中的shopt-s extglob
。似乎不起作用,我必须逃避什么吗?只有使用[y]|+[y]|*)
时,它似乎没有语法错误,但主要问题仍然存在,按“yyy”实际上会给出3个答案,以便在使用case之前在函数中设置shopt-s extglob
echo -en " Shall I close all Jboss processes ? [Y/n/e]: "
ThreeOptions
...
echo -en " Shall I do some other thing?"
ThreeOptions
...