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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《Linux命令行与shell脚本编程大全》第十八章 图形化桌面环境中的脚本编程
18.1 创建文本菜单 直接上例子吧:   1 #!/bin/bash   2 function menu   3 {   4         clear   5         echo   6         echo -e "\t\t\tSys Admin Menu\n"   7         echo -e "\t1. Display disk space"   8         echo -e "\t2. Display logged usage"   9         e
xcywt
2018/01/11
1.4K0
《Linux命令行与shell脚本编程大全》第十八章 图形化桌面环境中的脚本编程
shell编程-交互 脚本菜单
上面的脚本基本上是用echo打印的时间都花在写菜单,为此bash shell提供了一个命令select。
用户3599907
2020/07/17
2.4K2
轻度Linux服务器维护人员常用的Shell脚本命令
笔者平时属于非专业运维人员,但是偶尔也需要接触一些测试服务器和个人VPS服务器。所以收集了一些常用的Shell脚本,希望跟我一样的开发人员能有一些收获。 文件操作 更改当前目录 cd 获取当前目录 pwd 删除文件/目录 rm -f or rm -rf or rmdir 创建文件 touch or cat > xxx 创建临时文件 mktemp testing.XXXXXX, 文件名末尾加6个X 创建临时目录 mktemp -d dir.XXXXXX, 目录名末尾加6个X 创建目录 mkdir 移动文件/文
李海彬
2018/03/28
2.2K0
Linux Shell 基础
脚本文件启动前,系统已预设一些环境变量,在命令行中使用 printenv 查看这些变量:
用户2987604
2020/06/15
12.7K0
Shell for循环和select循环语句
for循环格式 for 变量名 in 变量取值列表 do 指令 done 示例 打印5 4 3 2 1 5个数字 #!/bin/bash for i in 5 4 3 2 1 do echo $i done 方法二 #!/bin/bash for (( i=5;i>0;i--)) do echo $i done PS:改名命令rename命令 jpg格式的图片改成png rename ".jpg" ".png" "*.jpg" 打印九九乘法表 #!/bin/bash for num1
云计算小黑
2022/12/28
7650
第三十二章 : 流程控制:case 分支
In this chapter, we will continue to look at flow control. In Chapter 28, we constructedsome simple menus and built the logic used to act on a user’s selection. To do this, weused a series of if commands to identify which of the possible choices has been selected.This type of construct appears frequently in programs, so much so that many programminglanguages (including the shell) provide a flow control mechanism for multiple-choice decisions.
砖业洋__
2023/05/06
1770
Shell脚本编程_shell简单脚本
  shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务,在用户和内核之间充当翻译官的角色,是一个命令解释器。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 shell。
全栈程序员站长
2022/11/09
8.3K0
Shell脚本编程_shell简单脚本
shell脚本编写手册(2021重编)
{ #!/bin/sh # 在脚本第一行脚本头 # sh为当前系统默认shell,可指定为bash等shell shopt # 显示和设置shell中的行为选项 sh -x # 执行过程 sh -n # 检查语法 set -
IT运维技术圈
2022/06/26
3.7K0
Shell脚本实现Linux系统和进程资源监控
在服务器运维过程中,经常需要对服务器的各种资源进行监控,例如:CPU的负载监控,磁盘的使用率监控,进程数目监控等等,以在系统出现异常时及时报警,通知系统管理员。本文介绍在Linux系统下几种常见的监控需求及其shell脚本的编写。
菲宇
2019/06/11
3.1K0
shell脚本中的case条件语句介绍和使用案例
#前言:这篇我们接着写shell的另外一个条件语句case,上篇讲解了if条件语句。case条件语句我们常用于实现系统服务启动脚本等场景,case条件语句也相当于if条件语句多分支结构,多个选择,case看起来更规范和易读
老油条IT记
2020/04/08
6.8K0
shell脚本中的case条件语句介绍和使用案例
详解shell脚本case条件语句,开发各种服务启动脚本跳板机
#前言:case条件语句我们常用于实现系统服务启动脚本等场景,case条件语句也相当于if条件语句多分支结构,多个选择,case看起来更规范和易读
老油条IT记
2020/09/04
9230
shell脚本-循环选择语句
过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$"。
菲宇
2022/12/21
2.5K0
shell脚本-循环选择语句
Linux运维常用shell脚本之系统管理实例
写一个配置文件保存被监控主机SSH连接信息,文件内容格式:主机名 IP User Port
菲宇
2022/12/21
3.2K0
Linux Shell常用脚本整理
一些常用的Shell脚本笔记,这是当年在兄弟连学习Linux运维是写过的一些案例,后期在工作中也遇到了一些问题需要使用shell来解决的,这里总结起来方便以后可以直接复用。
王 瑞
2022/12/28
1K0
Shell 脚本进阶,经典用法及其案例
(2)案例 #求出(1+2+...+n)的总和 sum=0 read -p "Please input a positive integer: " num if [[ $num =~ [^0-9] ]] ;then echo "input error" elif [[ $num -eq 0 ]] ;then echo "input error" else for i in `seq 1 $num` ;do sum=$[$sum+$i] done echo $sum fi unset zhi 分析:sum初始值为0,请输入一个数,先判断输入的是否含有除数字以外的字符,有,就报错;没有判断是否为0,不为0进入for循环,i的范围为1~输入的数,每次的循环为sum=sum+i,循环结束,最后输出sum的值。 #求出(1+2+...+100)的总和 for (( i=1,num=0;i<=100;i++ ));do [ $[i%2] -eq 1 ] && let sum+=i done echo sum=$sum 分析:i=1,num=0;当i<=100,进入循环,若i÷2取余=1,则sum=sum+i,i=i+1。 2、while (1)用法格式 while 循环控制条件 ;do 循环 done 循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true” ,则执行一次循环;直到条件测试状态为“false” 终止循环 (2)特殊用法(遍历文件的每一行): while read line; do控制变量初始化 循环体 done < /PATH/FROM/SOMEFILE 或cat /PATH/FROM/SOMEFILE | while read line; do 循环体 done 依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line (3)案例: #100以内所有正奇数之和 sum=0 i=1 while [ $i -le 100 ] ;do if [ $[$i%2] -ne 0 ];then let sum+=i let i++ else let i++ fi done echo "sum is $sum" 分析:sum初始值为0,i的初始值为1;请输入一个数,先判断输入的是否含有除数字以外的字符,有,就报错;没有当i<100时,进入循环,判断 i÷2取余 是否不为0,不为0时为奇数,sum=sum+i,i+1,为0,i+1;循环结束,最后输出sum的值。 3、until 循环 (1)用法 unitl 循环条件 ;do 循环 done 进入条件:循环条件为true ;退出条件:循环条件为false;刚好和while相反,所以不常用,用while就行。 (2)案例 #监控xiaoming用户,登录就杀死 until pgrep -u xiaoming &> /dev/null ;do sleep 0.5 done pkill -9 -u xiaoming 分析:每隔0.5秒扫描,直到发现xiaoming用户登录,杀死这个进程,退出脚本,用于监控用户登录。 4、select 循环与菜单 (1)用法 select variable in list do 循环体命令 done
互联网老辛
2021/05/11
8330
Shell 脚本进阶,经典用法及其案例
Linux Shell脚本编程提高
Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核,不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序.Shel编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果,下面我们会介绍Shell-Script的编写.
王 瑞
2022/12/28
3.4K0
Linux Shell脚本编程提高
Linux 【Shell脚本经典案例】
===============Talk is cheap, show me the code,bye-bye================
IT茂茂
2020/09/17
3.4K0
Linux 【Shell脚本经典案例】
Bash脚本编程(原创)
Bash,Unix shell的一種,在1987年由布萊恩·福克斯為了GNU計劃而编写。1989年釋出第一個正式版本,原先是計劃用在GNU作業系統上,但能运行于大多数类Unix系统的操作系统之上,包括Linux與Mac OS X v10.4都將它作為預設shell。它也被移植到Microsoft Windows上的Cygwin與MinGW,或是可以在MS-DOS上使用的DJGPP專案。在Novell NetWare與Andriod在上也有移植。1990年後,Chet Ramey成为了主要的维护者。為Bourne shell的後繼相容版本與開放原始碼版本,它的名稱來自Bourne shell(sh)的一个双关语(Bourne again / born again):Bourne-Again SHell。
用户2645267
2018/08/04
1.6K0
开源部分组内实用运维shell脚本模版
IT运维技术圈
2023/09/07
3420
开源部分组内实用运维shell脚本模版
十个增加 Linux Shell 脚本趣味的小工具
很多人误以为shell脚本只能在命令行下使用。其实shell也可以调用一些GUI组件,例如菜单,警告框,进度条等等。你可以控制最终的输出,光标位置还有各种输出效果。下面我将介绍一些工具,帮助你创建强大的,互动的,用户友好的 Unix/Linux shell脚本。我在FreeBSD和Linux下测试过这些工具,不过其他UNIX系列的操作系统应该都支持的。
Debian中国
2018/12/21
1.2K0
相关推荐
《Linux命令行与shell脚本编程大全》第十八章 图形化桌面环境中的脚本编程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验