2.7实战案例:单分支if语句
if 条件测试
then
命令序列
Fi
if 条件测试;then
命令序列
Fi
if语句若为真,则执行then语句,若不为真则什么都不做
例子练习
if ! mkdir "/media/cdrom"
then
echo "failed to create cdrom directory"
fi
若不能创建cdrom,则输出failed to create cdrom directory
通过if语句来判断是否服务正在运行
#!/bin/bash
if [ -z $1 ];
then
echo "错误,未输入服务名称"
echo "用法:脚本名 服务器名称"
exit
fi
if systemctl is-active $1 &>/dev/null ;
then
echo "$1已经启动...."
else
echo "$1未启动...."
fi
$0 就是编写的shell脚本本身的名字
$1 是在运行shell脚本传的第一个参数
$2 是在运行shell脚本传的第二个参数
$$ Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)
if else结构
num=$[RANDOM%10+1]
if [ $num -gt 5 ];
then
echo "big"
echo $num
else
echo "small"
echo $num
fi
RANDOM是Linux的随机数
case语句
read -p "请输入一个字母:" me
case $me in
a)
echo "Im a !";;
b)
echo "Im BBB!";;
c)
echo "Im C!!!";;
*)
echo "This is other!";;
esac
;;:为结束
;;&:会对后面的模式进行匹配
;&:会执行后一个模式匹配的命令
小练习
#!/bin/bash
echo "----------------------------------------------------------------------------"
echo "1、自动配置Yum仓库(本地)"
echo "2、配置网络"
echo "----------------------------------------------------------------------------"
read -p "请输入选项:" state
case $state in
1)
echo "开始执行自动配置本地yum仓库脚本"
mkdir /media/cdrom
if [ $? -eq 0];then
echo "/dev/cdrom /media/cdrom iso966 defaults 0 0" >> /etc/fstab
mount -a
rm -rf /etc/yum.repos.d/*.repo
ls /etc/yum.repos.d/
cat >> /etc/yum.repos.d/wd.repo << EOF
[wd]
name=wd
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
EOF
yum clean all
yum list
echo -e "\e[31m本地Yum仓库已自动配置成功\e[0m"
else
echo "File exists!"
echo "/dev/cdrom /media/cdrom iso9660 defaults 0 0" >> /etc/fstab
mount -a
rm -rf /etc/yum.repos.d/*.repo
ls /etc/yum.repos.d/
cat >> /etc/yum.repos.d/wd.repo << EOF
[wd]
name=wd
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
EOF
yum clean all
yum list
echo -e "\e[31m本地Yum仓库已自动配置成功\e[0m"
fi;;
2)
read -p "请输入IP地址" ip
read -p "请输入掩码" mask
read -p "请输入网关" gateway
nw=$(ifconfig | head -1 | cut -d":" -f1)
echo "BOOTPROTO=static
ONBOOT=yes
IPADDR=$ip
NETMASK=$mask
GATEWAY=$gateway" >/etc/sysconfig/network-scripts/ifcfg-$nw
echo "BROWSER_ONLY=no" >>/etc/sysconfig/network-scripts/ifcfg-$nw
echo "BOOTPROTO=static" >>/etc/sysconfig/network-scripts/ifcfg-$nw
echo "NAME=$nw" >> /etc/sysconfig/network-scripts/ifcfg-$nw
echo "DEVICE=$nw" >> /etc/sysconfig/network-scripts/ifcfg-$nw
echo "ONBOOT=yes" >> /etc/sysconfig/network-scripts/ifcfg-$nw
echo "配置成功"
systemctl restart network;;
esac