这节课我们来讲一下嵌套if,我们在上一节中给大奖讲了if-then-else,那种对应的情形就比较单一,因为我们只能对if这种条件作判断,只能判断一个特定的条件,如果符合的话就执行then中的语句;否则的话执行else中的语句。那假如我现在有多种情形需要判断呢?比如说我现在需要对情形1、情形2、情形3做判断,除此之外呢,都不符合情形1、情形2、情形3才会执行else。那么应该怎么写呢?其实我们的if可以写多个。
语法
if command | condition
then
commands
elif command | condition
then
commands
else
commands
fi
如果有更多的条件需要判断,可以写更多的elif command | condition。这是它的语法结构。
我们来演示一下。
通过执行:
ss -tnlp
可以看到有个shd,我们就用它来做演示。
vim nested-if.sh
#!/bin/bash
#
if ps -ef | grep mysqld | grep -v grep &> /dev/null
then
echo "MySQL is RUNNING"
elif ps -ef | grep sshd | grep -v grep &> /dev/null
then
echo "sshd is RUNNING"
else
echo "MySQL and sshd is all STOPPED"
fi
如果MySQL和sshd的服务都不存在的话,就会执行else里的指令。输出:MySQL and sshd is all STOPPED。这样的判断场景在我们写shell脚本中是很常用的,其实复杂的脚本无非就是由很多这样的小点组织起来的。所以我们一定要理解这个知识。
另外,我们还可以将if和then放到一行,但是需要注意,这时then和它前面的command | condition之间要有“;”进行分割。
#!/bin/bash
#
if ps -ef | grep mysqld | grep -v grep &> /dev/null;then
echo "MySQL is RUNNING"
elif ps -ef | grep sshd | grep -v grep &> /dev/null;then
echo "sshd is RUNNING"
else
echo "MySQL and sshd is all STOPPED"
fi
这样写看起来逻辑更加清晰一些。
好了,这小节就说到这里。如果各位有补充请留言,我验证之后完善文章。谢谢!