我想暂停shell脚本中的输入,并提示用户进行选择。
标准的是,否,或取消键入问题。
如何在典型的bash提示符中实现这一点
在shell提示符下获取用户输入的最简单、最广泛的方法是read命令。演示其使用的最佳方法是简单的演示:
为true时;做
阅读-p";是否要安装此程序?“;伊恩
案件$yn
[Yy]*)进行安装;打破
[Nn]*)出口;;
*)回声“;请回答是或否;;;
以撒
完成
Steven Huwig指出的另一种方法是Bash的select命令。下面是使用选择的相同示例:
echo";是否要安装此程序?“;
在“中选择yn”;是”&引用;“没有”;;做
案件$yn
是)进行安装;打破
否)退出;;
以撒
完成
使用select无需清理输入–它显示可用选项,您可以键入与您的选择相对应的数字。它还会自动循环,因此如果它们提供无效输入,则无需while true循环重试
此外,莱娅·格里斯在她的回答中展示了一种使请求语言不可知的方法。调整我的第一个示例以更好地服务于多种语言可能如下所示:
设置--$(区域设置LC\U消息)
yesptrn="$“1”;;noptrn="$“2”;;叶利剑$“3”;;noword=”的缩写$4“;
虽然真实;做
阅读-p";安装(${yesbrow}/${noword})&引用;伊恩
如果[[quot;$yn";=~$yesxpr]];然后进行安装;出口fi
如果[[quot;$yn";=~$noexpr]];然后退出;fi
“回声”;回答${yesbrow}/${noword}。”;
完成
显然,其他通信字符串在这里仍然未翻译(安装、应答),这需要在更完整的翻译中解决,但在许多情况下,即使是部分翻译也会有所帮助
最后,请查看F.Hauri的精彩答案