龙空技术网

shell如何制作一个交互式菜单?

SuperOps 1482

前言:

今天看官们对“c语言程序设计菜单界面”都比较关怀,咱们都想要了解一些“c语言程序设计菜单界面”的相关内容。那么小编在网络上搜集了一些有关“c语言程序设计菜单界面””的相关资讯,希望咱们能喜欢,我们快快来了解一下吧!

shell如何制作一个交互式菜单?

有些人喜欢使用select语句,因为它很简单。如果您的需求非常简单,那么这可能已经足够了。如果您想要自定义外观和风格,您可以自己编写一个菜单。还有一种方式是使用dialog,但在这个页面上我们不会涉及。

使用select语句

PS3 是一个 Shell 变量,用于定义 select 命令的提示符。

它的全名是 PROMPT_SELECTOR,是一个字符串。

当使用 select 命令显示一个菜单给用户选择时,会打印这个提示字符串,等待用户输入选项。

例如:

PS3='Please select an option: 'select name in apple banana cherry; do     echo "You have chosen $name"    breakdone

这里 PS3 被定义为:

Please select an option: ​

然后 select 命令会提示:

1) apple  2) banana3) cherryPlease select an option:

等待用户输入选项编号,如 1​。

用户输入无效选项时,也会再次展示上述提示:

Please select an option:

另外,在 PS3 提示符后可以使用特殊序列:

​%n​:选项编号​%s​:选项名称

例如:

PS3='Select from (%n) %s: 'select name ...

Then the prompt will be:

Select from (1) apple:  Select from (2) banana:Select from (3) cherry:  

所以通过设置 PS3 变量,可以定义 select 命令的自定义提示符。

它通常用于给用户友好的提示,提高程序的用户体验。

用shell来编写自己的菜单

只需使用echo和read语句创建一个循环即可,非常简单。让我们通过创建一个多级菜单应用程序来增加乐趣。

#!/bin/bashmain() {  while true; do    echo "== Make your selection:"    echo "a) add"    echo "s) subtract"    echo "m) multiply"    echo "q) quit"    while true; do      read -r -n1 -p "> " ch      echo      case $ch in        a) add; break;;        s) subtract; break;;        m) multiply; break;;        q) exit 0;;        *) echo "Unrecognized command.  Please try again.";;      esac    done  done}add() {  local a b  while true; do    echo "== Addition"    echo "Enter first addend, or q to return to main menu."    read -r -p "> " a    [[ $a = q ]] && return    echo "Enter second addend."    read -r -p "> " b    echo "$a + $b = $((a + b))"  done}# subtract and multiply functions not shownmain

你可以根据自己的需要将其设计得简单或者复杂。您可以创建自己的输入函数来封装read,并持续等待用户输入一个符合语法的响应。您可以使用read -e命令允许用户使用readline编辑功能。一切都取决于您。

One More Thing

如果你想学习如何编写更加健壮和可靠的 Shell 脚本,减少生产环境中的错误和故障,那么关注我吧!我会分享 Shell 编程的最佳实践和建议,帮助你提高 Shell 脚本的鲁棒性和可维护性。如果你想深入了解 Shell 编程的实际应用和技巧,可以关注我的《Shell 脚本编程最佳实践》专栏,里面有我在一线互联网大厂的实际生产经验和最佳实践,帮助你高效完成各种自动化任务。

标签: #c语言程序设计菜单界面