shell脚本:if双分支语句简单案例

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 
20200225日 星期二 01:29:07 CST,mysql服务已宕机
### Shell脚本中`if`条件语句详解 #### 单个条件判断 在Shell脚本里,单个条件判断是最基础的形式。其结构简单明了,当指定的单一条件下成立时,则执行相应的代码块[^1]。 ```bash #!/bin/bash dir="/media/cdrom" if [ ! -d "$dir" ]; then mkdir "$dir" fi ``` 上述例子展示了创建目录的操作;先检测目标路径是否存在且为目录形式,如果不是的话就会新建该文件夹[^4]。 #### 双分支条件判断 对于存在两种可能情况的选择处理,可以采用双分支的方式实现。即除了满足特定条件下的动作外,还规定了另一种情形下应采取的行为。 ```bash #!/bin/bash read -p "请输入成绩:" score if ((score >= 60)); then echo "及格啦!" else echo "不及格哦~" fi ``` 此段代码实现了基于用户输入的成绩来决定输出的信息[^5]。 #### 多分支条件判断 面对多个互斥选项之间的抉择问题,可以通过增加elif子句来进行更复杂的逻辑判定。 ```bash #!/bin/bash read -p "请输入分数:" grade if ((grade >= 90)); then result="优秀" elif ((grade >= 80)) && ((grade < 90)); then result="良好" elif ((grade >= 70)) && ((grade < 80)); then result="一般" elif ((grade >= 60)) && ((grade < 70)); then result="合格" else result="不合格" fi echo "${result}" ``` 这段脚本能够根据不同范围内的得分给出对应的评价等级。 #### 嵌套`if`语句 为了应对更加复杂的情况组合,在某些情况下还可以利用嵌套的方式来构建多层次的决策树形结构。 ```bash #!/bin/bash read -p "请输入年龄:" age read -p "请输入性别(男/女):" gender if [[ $gender == "男" ]]; then if ((age > 20)); then echo "成年男性" else echo "未成年男性" fi elif [[ $gender == "女" ]]; then if ((age > 20)); then echo "成年女性" else echo "未成年女性" fi fi ``` 这里展示了一个简单案例,它会依据用户的年龄和性别分别作出不同的回应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚伪的空想家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值