流程控制语句(study05)

五、流程控制语句

1.基本语法结构

(1)if结构

箴言1:只要正确,就要一直向前冲

if [ condition ];then
command
command
fi

if test 条件;then
命令
命令
fi

[ 条件 ] && command

 

 

(2)if...else结构

箴言2:分岔路口,二选一

if [ condition ];then
command1
else
command2
fi

[ 条件 ] && command1 || command2

 

小试牛刀

让用户自己输入字符串,如果用户输入的是hello,则打印world,否则打印"请输入hello"

#!/bin/bash

read -p '请输入字符串:' str;
if [ "$str" = "hello" ];then
echo world
else
echo "请输入hello!"
fi

(3)if...elif...else结构

箴言3:选择很多,能走的只有一条

 

if [ condition1 ];then
command1 结束
elif [ condition2 ];then
command2 结束
else
command3
fi

注释:
如果条件1满足,执行命令1后结束;
如果条件1不满足,再看条件2,如果条件2满足执行命令2后结束;
如果条件1和条件2都不满足执行命令3结束

(4)层层嵌套结构

箴言4:多次判断,带你走出人生迷雾

if [ condition1 ];then
command1
if [ condition2 ];then
command2
fi
else
if [ condition3 ];then
command3
elif [ condition4 ];then
command4
else
command5
fi
fi

注释:
如果条件1满足,执行命令1;
如果条件2也满足执行命令2,不满足只执行命令结束;
如果条件1不满足,不看条件2,直接看条件3,如果条件3满足执行命令3;
如果不满足则看条件4,如果条件4满足执行命令4,否则执行命令5

 

 

2.应用案例

(一)判断两台主机是否ping通

需求:判断当前主机是否和远程主机ping通

①思路

1.使用哪个命令实现 ping -c次数 ip

2.根据命令的执行结果状态来判断 $?

3.根据逻辑和语法结构来编写脚本

②实现

#!/bin/bash

read -p "请输入ip或域名:" str
ping -c1 $str > /home/test/all.log
if [ $? -eq 0 ];then
echo "SUCCESS!!!"
else
echo "ERROR!!!"
fi

(二)判断一个进程是否存在

需求:判断web服务器中httpd进程是否存在

#!/bin/bash

read -p "输入需要查询的进程:" str
pgrep $str > /home/test/all.log
test $? -eq 0 && echo "EXISTS!!!" || echo "ERROR!!!"

posted @ 2022-04-21 17:43    阅读(48)  评论(0)    收藏  举报