专业编程基础技术教程

网站首页 > 基础教程 正文

Bash Shell制作菜单3部曲:1简单交互菜单|Linux|运维|嵌入式

ccvgpt 2024-10-12 14:08:24 基础教程 12 ℃

2021-06-01

今天儿童节,祝大家节日快乐

Bash Shell制作菜单3部曲:1简单交互菜单|Linux|运维|嵌入式

前言

无论你是开发者、系统运维、或者仅仅是Linux爱好者, 你都应该使用Bash脚本去重复、乏味的Linux常用命令组合, 这样你更有精力去关注产品和功能的事情上。

在这篇指导文章里,我会给你演示“怎么在Bash制作一个多选项可交互菜单”*, 以后,需要执行哪个任务,对应选择就是。

任务

首先确保你已经对Bash基本有了基本了解,再继续阅读下面的内容。

本文演示的菜单包含如下几个任务:

  • 检查内存信息
  • 检查CPU负载
  • 检查所有TCP连接状态
  • 检查内核版本

如下动态图片演示效果:

这里是脚本执行

function title()
{
	echo "*****************************"
	echo "${1}"
	echo "*****************************"
}
function memory_check() {
	title "内存使用情况: "
	free -h
}

function cpu_check() {
	title "CPU信息: "
	uptime
}

function check_netstat() {
	title "网络各种链接状态: "
	netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
}

function kernel_check() {
	title "内核版本: "
	uname -a
	lsb_release -a
}

给它点颜色看看

为了菜单更具有可读性,更易抓住用户注意力,我们有必要添加颜色提示功能。

在你的文档前端添加下面的几个颜色变量

##
# 自定义色彩
##
NORMAL='\e[0m'
RED='\e[31;1m'
GREEN='\e[32;1m'
BLUE='\e[34;1m'
YELLOW='\e[33;1m'

当要修改某字体颜色可以这么做,被改变颜色的文本内容前输入对应的颜色变量。

添加菜单

最后添加你的菜单,创建一个死循环的功能你能函数,usage函数里是菜单交互的输出内容,可选动作用颜色高亮。

function usage() {
	echo -ne "
系统检测功能菜单
${GREEN} 1) ${NORMAL} 内存信息
${GREEN} 2) ${NORMAL} CPU 负载
${GREEN} 3) ${NORMAL} 所有TCP连接状态
${GREEN} 4) ${NORMAL} 内核版本
${GREEN} a) ${NORMAL} [执行所有]
${GREEN} q) ${NORMAL} [退出]
${YELLOW} 选择: ${NORMAL}"
}

下文有两个read:

  • read cmd : 等待键盘输入,以回车结束
  • read -n 1 : 暂停,除非收到任何字符

最后的一个 case 语句触发不同的任务,具体执行任务依赖于变量 $cmd

function main_menu() {
	while [ 1 ]; do
		clear          # 清除屏幕
		usage          # 提示字符串
		read cmd       # 等待输入,以回车结束
		case $cmd in   # 这里内容自由发挥,根据cmd执行不通任务
            '1') memory_check ;;
            '2') cpu_check ;;
            '3') check_netstat ;;
            '4') kernel_check ;;
            'a') all_checks ;;
            'q') return 0 ;;
		*) echo -e $RED"错误选项."$NORMAL ;;
		esac

		read -n 1       # 暂停,除非收到任何字符
	done
}
main_menu               # 菜单,走你

最后在脚本的末尾调用main_menu函数。

总结

现在你已经知道如何在Bash上创建菜单了,可以根据用户选择执行相应任务。

这篇文章是《Bash菜单3部曲》系列,下一篇将教你《以回调函数方式模块化实现Bash菜单》

关注我的频道 下次更新不错过,希望我的文章对你有帮助,

如何获取本系列源码:

  • 源码仓库:gitee.com/xiegejie
  • 给我发私信:“bash-menu
  • 点击下文: “了解更多



往期内容

聊简单的软件加密安全,nop汇编指令绕过加密



本地DVD做deb源,apt-get快得飞起

Tags:

最近发表
标签列表