避免用户输入错误

时间:2016-03-30 10:10:47

标签: 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"
         ABRT=3
         CloseProcedure
    ;;
    y|Y|*) echo "...ok..."
           ACT=1
    ;;
 esac
}

该功能以这样的方式写入,以便单个压力的字母将选择该选项,并且"输入/返回" (确实每隔一个键都会使用默认值。

如何防止读取命令无意中读取双/多键盘输入(又名手掌粗糙)。

EX。

echo -en "  Shall I close all Jboss processes ? [Y/n/e]: "
ThreeOptions
...
echo -en "  Shall I do some other thing?"
ThreeOptions
...

如果我按下" yy"我注意到我也回答了实际问题和NEXT。

PS:第一个问题,所以我希望它是可以理解的,而且我没有写太多:)

1 个答案:

答案 0 :(得分:0)

如果您使用的是bash,则可以尝试使用bash case结构中的shell pattern matching

例如,使用+([y])|+([Y])|*)代替y|Y|*)

修改:在使用shopt -s extglob之前,请记得在函数中调用case