while语句
1.特点:条件为真就进入循环;条件为假就退出循环
2.语法结构:
while 表达式
do
command...
done
入门案例:
计算1-50偶数和
until语句
1.特点 : 和 while 刚好相反,只要不满足条件就一直循环 ( 屡败屡战 )
2.语句结构:
until expression
do
command
done
入门案例:
计算1-50偶数和
实战脚本
练习1:编写一脚本,30秒同步一次系统时间。若同步失败,则进行邮件报警;若同步成功,每成功一百次发一封邮件进行通知。
练习2:写一个脚本自动搭建nfs服务
#!/bin/bash
echo -e "\033[32m######testing the network.......\033[0m"
ping -c1 -w1 172.25.254.6 &>/dev/null
if [ $? -eq 0 ]
then
echo -e "\033[32mthe network is ok !!\033[0m"
else
echo -e "\033[31mthe network is not running!!\033[0m"
exit
fi
echo -e "\033[32m########turnning down the selinux.......\033[0m"
setenforce 0 &>/dev/null
if [$? -eq 0 ]
then
echo -e "\033[32mselinux is turning down\033[0m"
fi
systemctl stop firewalld &>/dev/null
if [ $? -eq 0 ]
then
echo -e "\033[32mfirewall is stoped"
fi
echo -e "\033[32m########testing the software......\033[0m"
rpm -q rpcbind &>/dev/null
if [ $? -eq 0 ]
then
echo "rpcbind is already installed"
else
echo "rpcbind is not installed"
dnf install rpcbind -y
if [ $? -eq 0 ];then
echo "rpcbind is now installed"
else
echo "rpcbind install failed"
exit
fi
exit
fi
echo -e "\033[32m#######mkdir dir network chmod .......\033[0m"
read -p "Please input share dir: " dir
[ -e $dir ] && {
echo "the dir exists"
}||{
mkdir -p $dir
echo "$dir create success"
exit
}
chmod 1777 $dir
read -p "please input the subnet to share: " subnet
read -p "please input share permission: " permission
echo -e "\033[32medit nfs configure file /etc/exports\033[0m"
read -p "input 1 -> clear config,default is add: " choice
if [ $choice -eq 1 ];then
> /etc/exports
fi
cat >> /etc/exports << EOF
$dir $subnet($permission)
EOF
echo -e "\033[32msetting service start with poweron and start searvice......\033[0m "
echo -e "\033[31mcheck nfs-server is start?\033[0m"
systemctl status nfs-server.service | grep active &>/dev/null
if [ $? -eq 0 ];then
systemctl restart nfs-server
echo "Nfs server restart success"
else
systemctl start rpcbind
systemctl start nfs-server
systemctl enable --now rpcbind
systemctl enable --now nfs-server
fi
echo -e "\033[32m########testing wheather network could be use......."
showmount -e 172.25.254.6 | grep $dir &> /dev/null
[ $? -eq 0 ] && {
echo -e "\033[32mshare success\033[0m"
}||{
echo -e "\033[32mshare failed\033[0m"
exit
}
echo -e "\033[32mnfs.service is created successfully!!!\033[0m"