shell综合项目

主菜单

http和Nginx分别的install的菜单,安装过程通过重定向到/dev/null达到看不见的效果

输入非整数或者大于4的数字都会提示错误

代码如下:

root@server \~\]# vim install_menu.sh #!/bin/bash function menu() { cat \<\< EOF #将内容显示到屏幕上 ----------------------------------------- \|\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*请输入选项\*\*\*\*\*\*\*\*\*\*\*\*\*\*\| ----------------------------------------- \*$(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 #将内容显示到屏幕上 ----------------------------------------- \|\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*请输入选项\*\*\*\*\*\*\*\*\*\*\*\*\*\*\| ----------------------------------------- \*$(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 "####请输入子菜单lamp_menu的选项:" num2 expr $num2 + 1 \&\>/dev/null #expr只支持整数运算,用于判断输入的是不是整数 if \[ $? -ne 0

then #如果状态码不为0,代表输入不为整数

echo "#################################"

echo "输入错误,请输入整数"

echo "#################################"

sleep 1 #等待一秒

elif [ $num2 -gt 4 ] #如果输入选项大于4

then

echo "#################################"

echo "输入错误,选项超出范围"

echo "#################################"

sleep 1 #等待一秒

fi

case $num2 in

yum install httpd -y &> /dev/null

if(($?==0))

then

echo "安装httpd成功"

fi

sleep 2

lamp_menu #返回二级菜单

;;

yum install mysql -y &>/dev/null

if(($?==0))

then

echo "安装mysql成功"

fi

sleep 2

lamp_menu #返回二级菜单

;;

yum install *php -y &>/dev/null #php有100多个小的子项,建议直接一起安装

if(($?==0))

then

echo "安装php成功"

fi

sleep 2

lamp_menu #返回二级菜单

;;

clear

menu #返回主菜单

;;

*)

clear

echo #输出换行符

echo -e "\033[31m输入错误选项,请重新输入\033[0m"

lamp_menu

esac

}

function lnmp_menu()

{

cat << EOF #将内容显示到屏幕上


|***************请输入选项**************|


*$(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 "####请输入子菜单lamp_menu的选项:" num3

expr $num3 + 1 &> /dev/null #expr只支持整数运算,用于判断输入的是不是整数

if [ ? -ne 0 \] #如果上一条命令执行成功则状态码?是0

then

echo "#################################"

echo "输入错误,请输入整数"

echo "#################################"

sleep 1 #等待一秒

elif [ $num3 -gt 4 ] #如果输入选项大于4

then

echo "#################################"

echo "输入错误,选项超出范围"

echo "#################################"

sleep 1 #等待一秒

fi

case $num3 in

yum install nginx -y &> /dev/null

if(($?==0))

then

echo "安装nginx成功"

fi

sleep 2

lnmp_menu #返回二级菜单

;;

yum install mysql -y &> /dev/null

if(($?==0))

then

echo "安装mysql成功"

fi

sleep 2

lnmp_menu #返回二级菜单

;;

yum install *php -y &> /dev/null

if(($?==0))

then

echo "安装php成功"

fi

sleep 2

lnmp_menu #返回二级菜单

;;

clear

menu #返回主菜单

;;

*)

clear

echo #输出换行符

echo -e "\033[31m输入错误选项,请重新输入\033[0m"

lnmp_menu #返回二级菜单

esac

}

clear

menu

while true

do

read -p "请在主菜单输入选项:" num1

expr $num3 + 1 &> /dev/null #expr只支持整数运算,用于判断输入的是不是整数

if [? -ne 0\] #如果上一条命令执行成功则状态码?是0

then

echo "#################################"

echo "输入错误,请输入整数"

echo "#################################"

sleep 1 #等待一秒

elif [ $num3 -gt 4] #如果输入选项大于4

then

echo "#################################"

echo "输入错误,选项超出范围"

echo "#################################"

sleep 1 #等待一秒

else

case $num1 in

clear

lamp_menu

;;

clear

lnmp_menu

;;

clear

break

;;

clear

menu

;;

*)

clear

echo -e "\033[31m输入错误选项,请重新输入\033[0m"

menu

esac

fi

done

相关推荐
IT成长日记11 分钟前
【Docker基础】Docker数据卷管理:docker volume ls及其参数详解
运维·docker·容器·volume ls
X_StarX31 分钟前
【Unity笔记01】基于单例模式的简单UI框架
笔记·ui·unity·单例模式·游戏引擎·游戏开发·大学生
zkmall2 小时前
企业电商解决方案哪家好?ZKmall模块商城全渠道支持 + 定制化服务更省心
大数据·运维·重构·架构·开源
智者知已应修善业2 小时前
【51单片机用数码管显示流水灯的种类是按钮控制数码管加一和流水灯】2022-6-14
c语言·经验分享·笔记·单片机·嵌入式硬件·51单片机
绝不偷吃4 小时前
ELK日志分析系统
运维·elk·jenkins
朱包林4 小时前
day45-nginx复杂跳转与https
linux·运维·服务器·网络·云计算
孙克旭_4 小时前
day045-nginx跳转功能补充与https
linux·运维·nginx·https
孞㐑¥6 小时前
Linux之Socket 编程 UDP
linux·服务器·c++·经验分享·笔记·网络协议·udp
Hacker_Oldv6 小时前
软件测试(功能、工具、接口、性能、自动化、测开)详解
运维·自动化
Java樱木7 小时前
使用字节Trae + MCP,UI 到网页自动化。
运维·自动化