使用shell编程实现百钱百鸡_shell编程实现简单菜单

f3ce5f46b9caa57b0a828def29855e65.png

     使用shell编程,可以很方便的将一些复杂的操作过程固化,通过程序的流程控制和智能判断,简化输入、防止误操作,以此提高维护效率。

     在界面程序中和web程序中,菜单的使用非常普遍,一方面菜单可以预览所有功能,另一方面菜单可以通过鼠标的简单单击就可以执行相关操作。

      但对于命令行程序,无法使用鼠标,但我们也可以通过模拟菜单的方式,通过输入一位数字来选择相应的菜单操作,依此达到使用菜单的效果。

一、程序整体说明

     如下截图实现一个简单的菜单程序,菜单上共有四个选项,分别是查看磁盘,查看CPU负荷,查看内存占用,以及退出菜单选择。

     通过清屏,确保屏幕显示完整无下移。

     通过函数调用,代码可读性增强,便于维护。

e265b2e2591a21a4eb3a0c015ea7308f.gif

二、程序详细说明

    6cb398ecb1843874fb02aa72b0973a4e.png

    ea1c5a2378713c45af3dff29f9cd22d1.png

①函数diskspace实现显示磁盘空间,执行df -k,执行前清屏

②函数cpustat实现CPU负荷查看,执行uptime,执行前清屏

③函数memfree实现内存占用情况查看,执行free -m,执行前清屏

④函数menu实现菜单显示

       echo -e 处理特殊字符,也就是\t转义为tab,将菜单显示更整齐

       echo -n  打印的字符串不再回车,也就是在提示串后面输入

       read -n 1 option,-n为读取指定长度的串,本程序中的1就是读取一个字符,然后将读取的字符指定给变量option

       同样,在执行显示菜单前清屏

⑤ 主程序通过while循环,重复执行选择,当选择0时退出循环

⑥while循环的内容要放到关键字do 和done之间

⑦通过case分支,根据option的值不同,执行不同的函数逻辑

   这种分支在shell中很常见,比如启停脚本中,根据输入参数不同,执行启停

   case以esac结束

⑧ 代表其他的任何输入,也就是除了0,1,2,3的任务键盘输入

⑨程序执行完毕退出循环后,清屏

三、代码复用

1、实现程序的启停

通过不同的选择,执行不同的命令,以此达到启停程序的目的。

2、实现数据库维护

我们经常要进行数据库的锁表、表空间、awr报告获取等频繁操作,将这些固化的维护写成菜单程序,交由基础维护人员执行。

3、实现更复杂的控制逻辑

样例中我们只定义了一级菜单,通过循环镶嵌可以实现多级菜单的操作。

附上程序代码:

#!/bin/bash

# simple script menu

function diskspace {

clear

df -k

}

function cpustat {

clear

uptime

}

function memfree {

clear

free -m

}

function menu {

clear

echo

echo -e "\t\t\t维护界面\n"

echo -e "\t1. 查看磁盘空间"

echo -e "\t2. 查看CPU负荷"

echo -e "\t3. 查看内存占用"

echo -e "\t0. 退出程序\n\n"

echo -en "\t\t请输入序号,选择您要执行的操作: "

read -n 1 option

}

#主程序

while [ 1 ]

do

menu

case $option in

0)

break ;;

1)

diskspace ;;

2)

cpustat ;;

3)

memfree ;;

*)

clear

echo "你选择了错误的序号";;

esac

echo -en "\n\n\t\t\t选择任意键返回菜单"

read -n 1 line

done

clear

d9bec048c3789cef26d2577f84f48f73.png                      1b3064eb8aac2328870e8036d408f7c4.gif 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值