if
if双分支执行流程,首先对if后面的条件进行判断,若条件成立,则执行then后面的命令序列,执行完后转到fi结束。若条件不成立,则执行else后面的命令序列,然后转到fi结束,继续执行后续命令。
语法
if [ 条件判断 ]
then
commands
else
commands
fi
if双分支简单案例
例1:测试主机存活性,并说明存活状态
#!/bin/bash
#date 2020-2-24
#描述:测试主机存活状态
read -p "请输入一个ip:" ip
ping -c 1 $ip &>/dev/null
if [ $? -eq 0 ]
then
echo "ip主机存活"
else
echo "ip主机未存活,请尽快查看主机情况"
fi
执行结果:
[root@linus ~]# sh 4.sh
请输入一个ip:192.168.1.123
ip主机存活
例2:测试服务运行状况,并说明运行状态
#!/bin/bash
#date 2020-2-24
#描述:测试httpd服务状态
yum install -y httpd &>/dev/null
systemctl start httpd &>/dev/null
netstat -anpt | grep httpd &>/dev/null
if [ $? -eq 0 ]
then
echo "httpd已经运行"
else
echo "httpd没有运行,应该是服务错误或者没有安装
,请尽快查看"
fi
执行结果:
[root@linus ~]# sh 5.sh
httpd已经运行
例3:判断指定的某个用户是否存在,若存在则显示提示信息并跳过,否则就创建。
#!/bin/bash
#date 2020-2-24
#描述:判断指定用户是否存在,不存在则创建
read -p "请输入用户名:" name
read -p "请输入用户密码:" passwd
cut -d: -f1 /etc/passwd | grep "\<$name\>" &>/dev/null
if [ $? -eq 0 ]
then
echo "用户$name已存在,不再创建"
else
echo "用户$name不存在,正在创建"
useradd $name &>/dev/null
echo "$name:$passwd" | chpasswd &>/dev/null
if [ $? -eq 0 ]
then
echo "用户$name密码创建成功"
else
echo "用户$name密码创建失败"
fi
fi
执行结果:
[root@linus ~]# sh 7.sh
请输入用户名:create
请输入用户密码:123.com
用户create不存在,正在创建
用户create密码创建成功
例4:每5分钟监控一次mysql服务运行状态,把服务错误信息写入到/var/log/mysql.log文件中。
#!/bin/bash
#date 2020-2-24
#描述:每五分钟监控一次mysql运行状态,并把错误信息写入日
志
pgrep -x mysqld &>/dev/null
if [ $? -ne 0 ]
then
echo "$(date),mysql服务已宕机" >> /var/log/mysql.log
else
echo "mysql正在运行"
fi
echo "5 * * * * sh /root/8.sh" >>/var/spool/cron/root
执行结果:
[root@linus ~]# sh 8.sh
[root@linus ~]# cat /var/log/mysql.log
2020年 02月 25日 星期二 01:29:07 CST,mysql服务已宕机