大家好,并提前致谢。
我有一个问题要问你。 在我用来管理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:第一个问题,所以我希望它是可以理解的,而且我没有写太多:)
答案 0 :(得分:0)
如果您使用的是bash
,则可以尝试使用bash case
结构中的shell pattern matching。
例如,使用+([y])|+([Y])|*)
代替y|Y|*)
修改:在使用shopt -s extglob
之前,请记得在函数中调用case
。