Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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 避免用户输入错误_Bash_Shell - Fatal编程技术网

Bash 避免用户输入错误

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

大家好,提前谢谢

我有个问题要问你。 在我为管理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"
         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
...