当前位置: 首页 > news >正文

项目:shell实现多级菜单脚本编写

目录

1. 提示

2. 演示效果

2.1. 一级菜单

2.2. 二级菜单

2.3. 执行操作

3. 参考代码


1. 提示

本脚本主要实现多级菜单效果,并没有安装LAMP、LNMP环境,如果要用在实际生成环境中部署LNMP、LAMP环境,只需要简单修改一下就可以了。

2. 演示效果

2.1. 一级菜单

2.2. 二级菜单

2.3. 执行操作

3. 参考代码

[root@server ~]# vim multi_menu.sh
#!/bin/bash
#
function menu(){
cat << EOF
----------------------------------------------
|*******Please Enter Your Choice:[1-4]*******|
----------------------------------------------
* `echo -e "\033[35m 1)lamp install\033[0m"`
* `echo -e "\033[35m 2)lnmp install\033[0m"`
* `echo -e "\033[35m 3)quit\033[0m"`
* `echo -e "\033[35m 4)return main menu\033[0m"`
EOF
}function lamp_menu(){
cat << EOF
----------------------------------------------
|*******Please Enter Your Choice:[1-4]*******|
----------------------------------------------
* `echo -e "\033[35m 1)http install\033[0m"`
* `echo -e "\033[35m 2)mysql install\033[0m"`
* `echo -e "\033[35m 3)php install\033[0m"`
* `echo -e "\033[35m 4)return main menu\033[0m"`
EOF
read -p "####please input second_lamp optios[1-4]: " num2
expr $num2 + 1 &>/dev/null #这里加1,判断输入的是不是整数。
if [ $? -ne 0 ]
then #如果不等于零,代表输入不是整数。echo "###########################"echo "Waing !!!,input error "echo "Please enter choose[1-4]:"echo "##########################"sleep 1
elseif [ $num2 -gt 4 ]thenecho "###########################"echo "Waing !!!,Out of range "echo "Please enter choose[1-4]:"echo "##########################"sleep 1fi
fi
case $num2 in1)# yum 安装httpdyum install httpd -y &> /dev/nullif(($?==0))thenecho "安装httpd成功"fisleep 2lamp_menu;;2)# yum 安装 MySQL...yum install mysql -y &> /dev/nullif(($?==0))thenecho "安装mysql成功"fisleep 2lamp_menu;;3)# yum 安装 PHP...yum install php -y &> /dev/nullif(($?==0))thenecho "安装php成功"fisleep 2lamp_menu;;4)clearmenu;;*)clearechoecho -e "\033[31mYour Enter the wrong,Please input again Choice:[1-4]\033[0m"lamp_menu
esac
}
function lnmp_menu(){
cat << EOF
----------------------------------------------
|*******Please Enter Your Choice:[1-4]*******|
----------------------------------------------
* `echo -e "\033[35m 1)nginx install\033[0m"`
* `echo -e "\033[35m 2)mysql install\033[0m"`
* `echo -e "\033[35m 3)php install\033[0m"`
* `echo -e "\033[35m 4)return main menu\033[0m"`
EOF
read -p "please input second_lnmp options[1-4]: " num3
expr $num3 + 1 &>/dev/null #这里加1,判断输入的是不是整数。
if [ $? -ne 0 ]
then #如果不等于零,代表输入不是整数。echo "###########################"echo "Waing !!!,input error "echo "Please enter choose[1-4]:"echo "##########################"sleep 1
elseif [ $num3 -gt 4 ]thenecho "###########################"echo "Waing !!!,Out of range "echo "Please enter choose[1-4]:"echo "##########################"sleep 1fi
fi
case $num3 in1)# yum 安装 Nginx...yum install nginx -y &> /dev/nullif(($?==0))thenecho "安装nginx成功"fisleep 2lnmp_menu;;2)# yum 安装 MySQL...yum install mysql -y &> /dev/nullif(($?==0))thenecho "安装mysql成功"fisleep 2clearlnmp_menu;;3)# yum 安装 PHP...yum install php -y &> /dev/nullif(($?==0))thenecho "安装php成功"fisleep 2clearlnmp_menu;;4)clearmenu;;*)clearechoecho -e "\033[31mYour Enter the wrong,Please input again Choice:[1-4]\033[0m"lnmp_menu
esac
}clear
menu
while true
doread -p "##please Enter Your first_menu Choice:[1-4] " num1expr $num1 + 1 &>/dev/null #这里加1,判断输入的是不是整数。if [ $? -ne 0 ]then #如果不等于零,代表输入不是整数。echo "----------------------------"echo "| Waring!!! |"echo "|Please Enter Right Choice!|"echo "----------------------------"sleep 1elif [ $num1 -gt 4 ]then # 输入数字超范围echo "----------------------------"echo "| Waring!!! |"echo "| Out of range! |"echo "----------------------------"sleep 1elsecase $num1 in1)clearlamp_menu;;2)clearlnmp_menu;;3)clearbreak;;4)clearmenu;;*)clearecho -e "\033[31mYour Enter a number Error,Please Enter again Choice:[1-4]: \033[0m"menuesacfi
done

相关文章:

项目:shell实现多级菜单脚本编写

目录 1. 提示 2. 演示效果 2.1. 一级菜单 2.2. 二级菜单 2.3. 执行操作 3. 参考代码 1. 提示 本脚本主要实现多级菜单效果&#xff0c;并没有安装LAMP、LNMP环境&#xff0c;如果要用在实际生成环境中部署LNMP、LAMP环境&#xff0c;只需要简单修改一下就可以了。 2. 演…...

Collections常用方法(Java)

Collections常用方法 使用 sort(List<T> list) 对 List 进行排序&#xff1a; List<Integer> numbers new ArrayList<>(Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6)); Collections.sort(numbers); System.out.println("排序后的列表&#xff1a;" …...

Mysql整理-概述

Mysql概述 MySQL是一种流行的开源关系数据库管理系统(RDBMS),它使用结构化查询语言(SQL)来访问、管理和处理数据。它是基于客户端-服务器模型的数据库,意味着数据存储在服务器上,而用户可以通过客户端软件从不同的位置访问这些数据。 MySQL的主要特点包括: 开源软件:M…...

ubuntu+QT+ OpenGL环境搭建和绘图

一&#xff0c;安装OpenGL库 安装OpenGL依赖项&#xff1a;运行sudo apt install libgl1-mesa-glx命令安装OpenGL所需的一些依赖项。 安装OpenGL头文件&#xff1a;运行sudo apt install libgl1-mesa-dev命令来安装OpenGL的头文件。 安装GLUT库&#xff1a;GLUT&#xff08;Ope…...

Vue实现打印功能(vue-print-nb)

1、安装依赖 npm install vue-print-nb --save2、在main.js中引入 import Print from vue-print-nb Vue.use(Print)3、在组件的打印区域标签上加 id“printArea” <div id"printArea"> 打印区域 </div>4、在组件的打印按钮标签上使用指令 v-print“pr…...

【JSON2WEB】06 JSON2WEB前端框架搭建

【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 前端技术路线太多了&#xff0c;知识点更多&…...

【蓝桥杯单片机入门记录】动态数码管

目录 一、数码管动态显示概述 二、动态数码管原理图 &#xff08;1&#xff09;原理图 &#xff08;2&#xff09;动态数码管如何与芯片相连 &#xff08;3&#xff09;“此器件” ——>锁存器74HC573 三、动态数码管显示例程 &#xff08;1&#xff09;例程1&#xf…...

12 Redis之Lua脚本

11. Lua脚本 Lua 是一个由标准 C 语言开发的、开源的、可扩展的、轻量级的、弱类型的、解释型脚本语言 常用于Nginx/分布式锁/ 先下载并安装Lua...

网络安全之内容安全

内容安全 攻击可能只是一个点&#xff0c;防御需要全方面进行 IAE引擎 DFI和DPI技术--- 深度检测技术 DPI --- 深度包检测技术--- 主要针对完整的数据包&#xff08;数据包分片&#xff0c;分段需要重组&#xff09;&#xff0c;之后对 数据包的内容进行识别。&#xff08;应用…...

在CentOS上使用Docker搭建Halo博客并实现远程访问的详细指南

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. Docker部署Halo1.1 检查Docker版本1.2 在Docker中部署Halo 二. Linux安装Cpol…...

数据结构day5

link_stack.c #include "link_stack.h" //申请栈顶指针 top_p create_top() {top_p top (top_p)malloc(sizeof(top_t));if(topNULL){printf("空间申请失败\n");return NULL;}top->len 0;top->ptop NULL; //刚申请栈指针时没有指向元素return to…...

基础!!!吴恩达deeplearning.ai:神经网络中使用softmax

以下内容有任何不理解可以翻看我之前的博客哦&#xff1a;吴恩达deeplearning.ai 文章目录 softmax作为输出层的神经网络Tensorflow的实现softmax的改进实现数值舍入误差(Numerical Roundoff Errors)sigmoid修改修改softmax 在上一篇博客中我们了解了有关softmax的原理相关内容…...

mapbox高德地图与相机

mapbox高德地图与相机 本案例使用Mapbox GL JavaScript库创建高德地图。 演示效果引入 CDN 链接地图显示 创建地图实例定义地图数据源配置地图图层 设置地图样式实现代码 1. 演示效果 2. 引入 CDN 链接 <script src"https://api.mapbox.com/mapbox-gl-js/v2.12.0/mapb…...

Eslint在Vscode中使用技巧的相关技巧

ps :该文章会详细结论构建一个脚手架遇到的问题&#xff0c;会持续更新&#xff0c;请定时查看 Eslint相关​ 在vscode中使用eslint插件 在vscode中用户配置没有开启eslint.enable 在vscode中工作区配置开启eslint.enable settings.json中没有做eslint相关配置 在编写的vue…...

045-WEB攻防-PHP应用SQL二次注入堆叠执行DNS带外功能点黑白盒条件

045-WEB攻防-PHP应用&SQL二次注入&堆叠执行&DNS带外&功能点&黑白盒条件 #知识点&#xff1a; 1、PHP-MYSQL-SQL注入-二次注入&利用条件 2、PHP-MYSQL-SQL注入-堆叠注入&利用条件 3、PHP-MYSQL-SQL注入-带外注入&利用条件 演示案例&#xff1a…...

【蓝牙协议栈】【BR/EDR】【AVRCP】蓝牙音视频远程控制协议

1. AVRCP概念 AVRCP(Audio/Video Remote Control Profile):音视频远程控制协议定义了蓝牙设备和 audio/video控制功能通信的特点和过程,另用于远程控制音视频设备,底层传输基于 AVCTP(音视频控制传输协议)。 ➢该 Profile定义了AV/C数字命令控制集。命令和信息通过 AVCT…...

Head First Design Patterns - 单例模式

什么是单例模式 单例模式确保应用中&#xff0c;一个类最多只有一个实例单例模式也提供访问此实例的全局访问点单例模式实现中&#xff0c;使用了一个私有构造器&#xff0c;一个静态方法以及一个静态变量 为什么要用单例模式 java中静态全局变量也能做到被实例化一次 但是…...

Mysql的备份还原

模拟环境准备 创建一个名为school的数据库&#xff0c;创建一个名为Stuent的学生信息表 mysql> create database school; Query OK, 1 row affected (0.00 sec)mysql> use school; Database changed mysql> CREATE TABLE Student (-> Sno int(10) NOT NULL COMME…...

分区表介绍

问题 单表数据量过大&#xff0c;查询的性能通常会变得很低 查询时磁盘的IO次数增加&#xff1a;MySQL的InnoDB引擎使用B树维护索引&#xff0c;一个典型的索引节点大概可以存储60-120个数据记录&#xff0c;一个三层的索引大概可以存储百万条数据。如果订单表增加一个数量级…...

emacs 源码分析(七)

文章目录 emacs源码分析&#xff08;七&#xff09;自己动手把emacs的DEFUN宏抠出来 <2024-01-07 周日> emacs源码分析&#xff08;七&#xff09; 这DEFUN宏就像胶水一样&#xff0c;它把c代码和emacs-lisp代码给联系起来。但是DEFUN宏看着怪恐怖的有没有&#xff01;…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...