网站首页 > 基础教程 正文
2021-06-01
今天儿童节,祝大家节日快乐
前言
无论你是开发者、系统运维、或者仅仅是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”
- 点击下文: “了解更多”
往期内容
猜你喜欢
- 2024-10-12 这个为生信学习打造的开源Bash教程真香!!(目录更新)
- 2024-10-12 Shell 函数(杰哥教你Linux) shell中函数
- 2024-10-12 Linux下程序是怎样执行的 linux怎么执行程序
- 2024-10-12 这几个常用 alias,带你高效做事(下)
- 2024-10-12 Shell脚本:函数语法以及实例讲解 shell脚本入门详解
- 2024-10-12 Linux 之 bash 编程 linux bash-4.1
- 2024-10-12 Bash函数:ucase、lcase:借助perl一键转换字符串为大小或小写
- 2024-10-12 Bash脚本中的用户交互:暂停、等待按键和倒计时的实现方法
- 2024-10-12 bash问题:是否有函数可以返回字符串的长度?
- 2024-10-12 shell脚本编程高级用法和函数,并举例说明
- 最近发表
- 标签列表
-
- 菜鸟教程 (58)
- jsp (69)
- c++教程 (58)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)