1:创建菜单函数文件
#vim menu #创建文件
x=1 #高亮行号,默认为1即可
y=0 #第几行
menu (){ #循环显示菜单的函数
clear
for i in 1,安装ftp服务 2,开关ftp服务 3,退出
do
echo "----------------"
let y++
[ $x -eq $y ] && echo -e "\033[43;93m$i\033[0m" && continue
echo "$i"
done
y=0
echo "----------------"
}
2:可动菜单
$'\033[A'代表键盘的 "上" 按键
$'\033[B'代表键盘的 "下" 按键
#vim ftp.sh
#!/bin/bash
. menu #读入菜单函数
while :
do
menu
read -n 3 c #-n 3是输入足够3个字符就自动进行下一步,c是存储字符的变量
if [ "$c" == $'\033[A' ];then #如果按了 "上" 键
[ $x -eq 1 ] && continue #根据变量x定义高亮行,在第1行就没变化
let x-- #如果不在第1行,就把x-1
elif [ "$c" == $'\033[B' ];then #如果按了 "下" 键
[ $x -eq 3 ] && continue #如果在第3行,没变化
let x++ #如果不在第3行,就把x+1
fi
done
之后执行ftp.sh可以看到菜单,按键盘上下键菜单发生变化
3:创建ftp安装函数文件
#vim ftp_install #创建函数文件
ftp_install(){
if rpm -q vsftpd &> /dev/null ;then #ftp如果已经安装则条件算成功
msg="vsftpd已安装" #定义信息变量msg
else
yum -y install vsftpd &> /dev/null
[ $? -eq 0 ] && msg="vsftpd安装成功" || msg="vsftpd安装失败"
fi
}
4:创建服务管理函数文件
#vim ser_manager #创建服务管理的函数文件
ser_manager(){
if ! rpm -q vsftpd &>/dev/null ;then #ftp如果未安装则条件算成功,!是取反
msg="未安装vsftpd软件包"
return #结束函数任务,跳出函数
fi
case $1 in
start) #调用本函数后追加start就是把服务开启
systemctl start vsftpd
msg="ftp服务已经启动"
ser_manager=start;;
stop) #调用本函数后追加stop就是把服务关闭
systemctl stop vsftpd
msg="ftp服务已经关闭"
ser_manager=stop;;
esac
}
5:完善主程序
#vim ftp.sh
#!/bin/bash
. menu #读入菜单函数
. ftp_install #读入安装函数
. ser_manager #读入服务管理函数
while :
do
menu
echo "$msg"
read -n 3 c #-n 3是输入足够3个字符就自动进行下一步,c是存储字符的变量
if [ "$c" == $'\033[A' ];then #如果按了 "上" 键
[ $x -eq 1 ] && continue #根据变量x定义高亮行,在第1行就没变化
let x-- #如果不在第1行,就把x-1
elif [ "$c" == $'\033[B' ];then #如果按了 "下" 键
[ $x -eq 3 ] && continue #如果在第3行,没变化
let x++ #如果不在第3行,就把x+1
elif [ -z $c ] && [ $x -eq 1 ];then #如果在第1行回车就执行下列任务
msg="ftp服务安装中。。。"
echo "$msg"
ftp_install #执行ftp_install函数的任务
elif [ -z $c ] && [ $x -eq 2 ];then #如果在第2行回车就执行下列任务
[ "$ser_manager" != "start" ] && ser_manager start || ser_manager stop
elif [ -z $c ] && [ $x -eq 3 ];then #如果在第3行回车就执行下列任务
exit
fi
done
标签:ftp,菜单,函数,eq,vsftpd,&&,msg,制作
From: https://blog.csdn.net/SagusaMayumi/article/details/139371346