case分支结构
case 变量 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
模式3)
命令序列3
;;
*)
无匹配后命令序列
;;
esac
举例:
# vim case.sh
#! /bin/bash
cat << EOF
Command action
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
EOF
read -p "请输入你要使用的功能:" choise
case $choise in
h|H)
cat << EOF
Command action
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
EOF
;;
f|F)
lsblk
;;
d|D)
df -Th
;;
m|M)
free -h
;;
u|U)
uptime
;;
q|Q)
exit
;;
*)
echo "请输入正确选项"
;;
esac
调用函数:
help(){ # 函数声明
cat << EOF
Command action
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
EOF
}
read -p "请输入你要使用的功能:" choise
case $choise in
h|H)
help #函数调用
;;
-------------
作业
Command action
h 显示命令帮助
n 修改主机名[接受用户输入主机名]
t 同步时间
y 配置yum源 [ 配置基础源base,扩展元epel ]
I 配置静态IP
p 安装服务[接受用户输入服务名称]
d 关闭防火墙和selinux
q 退出
EOF
举例:
#! /bin/bash
help() {
cat <<-EOF
工具箱:
a 显示命令帮助
h 修改主机名
e 配置静态IP地址
y 配置yum源[base基础源、epel扩展源]
p 安装服务
t 时间同步
f 关闭防火墙和selinux
q 退出
EOF
}
help
while :
do
read -p "请输入你要选择的服务:" choise
case $choise in
a|A)
help
;;
h|H)
read -p "请输入你要修改的主机名:" h
hostnamectl set-hostname $h && bash
;;
e|E)
read -p "请输入你要修改的静态IP地址:" IP
cat > /etc/sysconfig/network-scripts/ifcfg-ens33 << EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=$IP
GATEWAY=${IP%.*}.2
NETMASK=255.255.255.0
DNS1=8.8.8.8
DNS2=114.114.114.114
EOF
systemctl restart network
if [ $? -eq 0 ];then
echo "静态IP:$IP 已设置成功"
else
echo "静态IP:$IP 设置失败"
fi
;;
y|Y)
if [ -e /etc/yum.repos.d/CentOS-Base.repo ] && [ -e /etc/yum.repos.d/epel.repo ];then
echo "base基础源和epel扩展源已存在"
else
mv /etc/yum.repos.d/* /opt &>/dev/null
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo &>/dev/null
#yum clean all &> /dev/null
#yum makecache &> /dev/null
ls /etc/yum.repos.d/
if [ -e /etc/yum.repos.d/CentOS-Base.repo ] && [ -e /etc/yum.repos.d/epel.repo ];then
echo "yum源已经配置成功"
fi
fi
;;
p|P)
read -p "请输入你要安装的服务:" p
rpm -q $p &> /dev/null
if [ $? -eq 0 ];then
echo "$p 已安装"
else
yum install $p -y &> /dev/null
if [ $? -eq 0 ];then
echo "$p 安装成功"
else
echo "$p 安装失败,请检查网络问题或者yum源配置"
fi
fi
;;
t|T)
yum install ntpdate -y &> /dev/null
ntpdate ntp1.aliyun.com &> /dev/null
if [ $? -eq 0 ];then
echo "时间已同步"
date
else
echo "请尝试重新同步,或者检查网络问题"
fi
;;
f|F)
systemctl stop firewalld && systemctl disable firewalld &> /dev/null
if [ $? -eq 0 ];then
echo "防火墙已永久关闭"
fi
sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config
if [ $? -eq 0 ];then
echo "selinux已永久关闭"
fi
;;
q|Q|quit|exit)
exit
;;
esac
done