如何在Linux shell脚本中提示是/否/取消输入?

我想暂停shell脚本中的输入,并提示用户进行选择。
标准的,或取消键入问题。
如何在典型的bash提示符中实现这一点

在shell提示符下获取用户输入的最简单、最广泛的方法是read命令。演示其使用的最佳方法是简单的演示:

为true时;做
阅读-p"是否要安装此程序?“;伊恩
案件$yn
[Yy]*)进行安装;打破
[Nn]*)出口;;
*)回声“;请回答是或否;;;
以撒
完成

Steven Huwig指出的另一种方法是Bash的select命令。下面是使用选择的相同示例:

echo"是否要安装此程序?“;
在“中选择yn”;是”&引用;“没有”;;做
案件$yn
是)进行安装;打破
否)退出;;
以撒
完成

使用select无需清理输入–它显示可用选项,您可以键入与您的选择相对应的数字。它还会自动循环,因此如果它们提供无效输入,则无需while true循环重试

此外,莱娅·格里斯在她的回答中展示了一种使请求语言不可知的方法。调整我的第一个示例以更好地服务于多种语言可能如下所示:

设置--$(区域设置LC\U消息)
yesptrn=&quot$“1”;;noptrn=&quot$“2”;;叶利剑$“3”;;noword=”的缩写$4“;
虽然真实;做
阅读-p"安装(${yesbrow}/${noword})&引用;伊恩
如果[[quot;$yn"=~$yesxpr]];然后进行安装;出口fi
如果[[quot;$yn"=~$noexpr]];然后退出;fi
“回声”;回答${yesbrow}/${noword}。”;
完成

显然,其他通信字符串在这里仍然未翻译(安装、应答),这需要在更完整的翻译中解决,但在许多情况下,即使是部分翻译也会有所帮助

最后,请查看F.Hauri的精彩答案

发表评论