流程控制语句(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通
需求:
①思路
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!!!"
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号