Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >推荐一组shell脚本菜单的嵌套模版

推荐一组shell脚本菜单的嵌套模版

作者头像
IT运维技术圈
发布于 2024-12-05 04:32:05
发布于 2024-12-05 04:32:05
16100
代码可运行
举报
文章被收录于专栏:IT运维技术圈IT运维技术圈
运行总次数:0
代码可运行

大家好,波哥又来给大家推荐好东西啦!

如果大家有需要帮忙推荐的工具、框架、应用、脚本可以在文章下方留言,留言中被点赞、推荐回复较多的,波哥就会帮各位提前安排哦!

介绍

波哥为大家总结了四种常见的 shell 脚本菜单选择编码模式,每种模式都有其独特的优点和适用场景,是提升脚本交互性和用户体验的有效工具。首先,`select` 命令是创建简单循环菜单的一种极为便捷的方法。它能够自动生成一个带编号的选择列表,并提示用户进行输入,适合于需要实现基本菜单功能的场合。通过 `select` 命令,开发者能够迅速创建出直观且易于使用的选择界面,虽然其功能较为基础,但胜在简洁明了。

其次,结合 `read` 命令和 `case` 语句则提供了一种更为灵活的方案。这种方法允许对用户输入进行更复杂的处理和验证,适合于需要多种选择和复杂逻辑的情况。通过这种方式,开发者可以捕获用户的输入并根据输入执行不同的逻辑分支,从而实现更复杂的交互功能。

第三种方法是利用 `dialog` 工具创建图形化菜单。这种方式可以生成更具视觉吸引力的用户界面,使交互过程更加友好和直观。不过,这需要确保系统上已安装 `dialog` 工具。此外,图形化界面在某些环境下可能对用户更为友好,特别是在需要提升用户体验的应用中。

最后,`PS3` 提示符的使用可以在 `select` 命令中自定义选择提示。通过修改提示信息,开发者可以为用户提供更清晰的引导信息,这在选项较多或选项描述较长时尤为有用。了解和掌握这四种方法,可以帮助开发者根据具体的项目需求选择最合适的实现方式,进而编写出更加高效和用户友好的 shell 脚本。

1、msgbox

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dialog --title text --msgbox "This is a test" 10 20

效果图

代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2、select
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env bash

# using select in the menu

function diskspace {
  clear
  df -k
}

function whoseon {
  clear
  who
}

function menusage {
  clear
  cat /proc/meminfo
}

PS3="Enter option:"
select option in "Display disk space" "Display logged on users" "Display memory usage" "Exit program"
do
case $option in
  "Exit program")
    break ;;
  "Display disk space")
    diskspace ;;
  "Display logged on users")
    whoseon ;;
  "Display memory usage")
    menusage ;;
  *)
    clear
    echo "Sorry, wrong selection" ;;
esac
done
clear
代码语言:javascript
代码运行次数:0
运行
复制

效果图

3、脚本菜单

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env bash

function menu {
  clear
  echo
  echo -e "\t\tSys Admin Menu\n"
  echo -e "\t1. Display disk space"
  echo -e "\t2. Display logged on users"
  echo -e "\t3. Display memory usage"
  echo -e "\t0. Exit program\n\n"
  echo -en "\t\tEnter option:"
  read -n 1 option
}

function diskspace {
  clear
  df -k
}

function whoseon {
  clear
  who
}

function menusage {
  clear
  cat /proc/meminfo
}

while [ 1 ]
do
  menu
  case $option in
    0)
      break ;;
    1)
      diskspace ;;
    2)
      whoseon ;;
    3)
      menusage ;;
    *)
      clear
      echo "Sorry, wrong selection" ;;
  esac
  echo -en "\n\n\t\tHit any key to continue"
  read -n 1 line
done
clear
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
效果图
代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
4、dialog
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env bash

# using dialog to create a menu

temp=`mktemp -t test.XXXXXX`
temp2=`mktemp -t test2.XXXXXX`

function diskspace {
  df -k > $temp
  dialog --textbox $temp 20 60
}

function whoseon {
  who > $temp
  dialog --textbox $temp 20 50
}

function menusage {
  cat /proc/meminfo > $temp
  dialog --textbox $temp 20 50
}

while [ 1 ]
do
  dialog --menu "Sys Admin Menu" 20 30 10 1 "Display disk space" 2 "Display users" 3 "Display memory usage" 0 "Exit" 2> $temp2
  if [ $? -eq 1 ]
  then
    break
  fi

  selection=`cat $temp2`

  case $selection in
    1)
      diskspace ;;
    2)
      whoseon ;;
    3)
      menusage ;;
    0)
      break ;;
    *)
      dialog --msgbox "Sorry,invalid selection" 10 30
  esac
done
rm -f $temp 2> /dev/null
rm -f $temp2 2> /dev/null
代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
效果图

‍‍‍‍‍觉得不错别忘了给波哥一键三连哦!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT运维技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
uniapp page.json
---- 「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」 pages 配置应用,由哪些页面组成,此节点接收一个数组,数组中是多个对象。 对象有两个属性 path style path : String类型 配置页面路径 style : object类型 用于设置每个页面的状态栏、导航条、标题、窗口背景色等。页面中配置项会覆盖globalStyle 中相同的配置项 "pages": [ { "path": "pages/index/i
用户4793865
2023/01/12
1.4K0
uni-app打开外部链接方式汇总
该文章详细介绍了 uniapp 打开外部链接的多种方式, 写的很不错,小编在此推荐给大家,希望能对uniapp开发的小伙伴有所帮助!。
超级小可爱
2024/11/25
1.2K0
『UniApp』核心语法
下载地址:https://www.dcloud.io/hbuilderx.html
程序员NEO
2023/12/26
6472
『UniApp』核心语法
【云+社区年度征文】uni-app初体验
为了实现多端兼容,也综合考虑编译速度、运行性能等因素,uni-app 约定了如下开发规范(摘自官网):
小异常
2020/12/11
2.7K21
【云+社区年度征文】uni-app初体验
uni-app打开外部链接方式汇总(h5&app)–uniapp在app内打开美团领券链接
方案1 使用uni-app的扩展组件 uni-link,或者使用plus.runtime.openUR,参考文档uni-app官网
超级小可爱
2024/11/26
1K0
uni-app入门教程(2)页面样式、配置文件和生命周期
本文先介绍uni-app的页面样式和布局,包括尺寸单位、样式导入、内联样式和选择器等;再介绍两个配置文件,即pages.json和manifest.json的配置项和基本使用;最后简要介绍了生命周期的基本使用。
cutercorley
2020/12/16
3K0
uni-app入门教程(2)页面样式、配置文件和生命周期
如何高效的阅读uni-app框架?(建议收藏)
uni-app的框架,配置:page.json,manifest.json,package.json,vue.config.js。脚本,应用程序,main.js。日志打印,定时器,生命周期,页面,页面通讯。
达达前端
2019/11/27
1.6K0
uniapp自定义导航配置分享
基于uniapp 自定义导航栏|仿微信、淘宝顶部导航条,支持背景渐变、标题居左 /居中、搜索条,圆点提示,按钮可自定义传入文字 /字体图标 /图片
andy2018
2019/09/18
6.4K0
uniapp自定义导航配置分享
保姆级全栈项目BBS 开发实录 第二章:前端基础页面
https://cdn.jsdelivr.net/gh/Qiu-JW/NotePicture/2024/08/image-20240806215014105.png
Qiuner
2024/11/21
790
保姆级全栈项目BBS 开发实录 第二章:前端基础页面
uni-app小程序开发常用配置项配置
https://uniapp.dcloud.net.cn/collocation/pages.html#pages
码客说
2024/07/11
5410
H5客服系统源码开发时解决uniapp标题栏navigationBar设置不显示问题
在使用uniapp开发在线客服系统时,当设置了标题栏,那么在项目的所有页面中都会显示出标题
唯一Chat
2023/02/28
6760
H5客服系统源码开发时解决uniapp标题栏navigationBar设置不显示问题
Uniapp开发鸿蒙应用教程之自定义导航栏
连续分享了几天的Uniapp跨平台开发鸿蒙应用教程的文章,相信大家对跨平台开发已经有了初步的了解,今天分享一下跨平台开发中的自定义导航栏。
幽蓝计划
2025/06/08
1730
uni-app实战之社区交友APP(2)全局样式引入和底部导航栏开发
本文先介绍了uni-app项目中引入全局样式的种类,即App.vue中引入官方CSS样式库、自定义图标库和CSS动画库;再介绍了在pages.json中定义globalStyle;最后实现了项目的导航栏开发。
cutercorley
2021/01/26
3K0
uni-app实战之社区交友APP(2)全局样式引入和底部导航栏开发
app中的webview通识篇(上)
如果你还是第一次与app合作开发webview的页面,那么对于如何调试,可能有哪些问题可能是不够了解的。本文尝试性的根据自己的经验给大家一个入门级别的了解,如果是大佬级别的,可以绕路了。
RobinsonZhang
2018/12/14
5.3K0
app中的webview通识篇(上)
uniapp中去掉顶部导航栏-指定某页面去掉顶部导航栏
uniapp项目中如果想关闭所有页面的顶部导航栏 在page.json中 "globalStyle": { "navigationStyle":"custom", }, 如果是指定某个页面关闭顶部导航栏 ,{ "path" : "pages/index/webview", "style": { "navigationStyle":"custom" }
唯一Chat
2023/04/13
2.7K0
【Uniapp】-uni-app项目结构
好了,经过上一章节文章的介绍,就搭建好了 Uniapp 的开发环境,知道了如何通过 HBuilderX 将 Uniapp 编写的代码运行到浏览器当中,运行到微信开发者工具当中,运行到安卓模拟器上面去,了解完之后,接下来再来给大家介绍了解一下 Uniapp 默认项目的一个结构, 目录表达含义。
程序员NEO
2023/12/03
6780
【Uniapp】-uni-app项目结构
wx小程序--基础知识
微信小程序是腾讯于2017年1月9日推出的一种不需要下载安装即可在微信平台上使用的应用,主要提供给企业、政府、媒体、其他组织或个人的开发者在微信平台上提供服务。
eadela
2020/01/15
1.9K0
wx小程序--基础知识
【UniApp】-uni-app-路由
然后在配置一下,微信小程序的 AppId,直接去之前的项目中拷贝一下即可,找到之前项目的 manifest.json 文件,然后选择微信小程序配置,复制一下即可。
程序员NEO
2023/12/13
4280
【UniApp】-uni-app-路由
uniapp app端 webview 返回多次
嵌入页面有多个历史时,app端默认会返回嵌入页面的上一页,而不是uniapp的上一页
风花一世月
2024/03/19
1890
uni-app(优医咨询)项目实战 - 第1天
在本节要求大家掌握 uni-app 项目的创建、运行、以及 Android 真机环境配置,内容侧重于动手操作,需要理解的部分较少,操作过程中遇到错误后,可以从头重新进行操作,直到环境正常运行。
程序员朱永胜
2024/04/18
3020
uni-app(优医咨询)项目实战 - 第1天
相关推荐
uniapp page.json
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档