暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

shell编程实现简单菜单

3267


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


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


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


一、程序整体说明

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


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


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


二、程序详细说明


    

    



①函数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





                       


最后修改时间:2020-01-10 11:59:43
文章转载自数据库平台优化,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论