1.4.1 控制解析
学习目标
这一节,我们从 基础知识、简单实践、小结 三个方面来学习。
基础知识
简介
所谓的流程控制,主要针对的是,当我们处于流程步骤执行的过程中,因为某些特殊的原因,不得不停止既定的操作进行步骤的调整,常见的临时调整场景如下:
continue控制- 满足条件的情况下,临时停止当前的循环,直接进入到下一循环
break控制- 满足条件的情况下,提前退出当前的循环
exit控制- 直接退出当前循环的程序
shift控制- 依次从循环列表中读取读取内容,并将读取的内容从列表中剔除
简单实践
exit简介
exit在shell中是一个特殊的程序退出信号,不仅仅可以直接退出当前程序,还可以设定退出后的状态返回值,使用方式如下:exit num
注意:1 在脚本中遇到exit命令,脚本立即终止;终止退出状态取决于exit命令后面的数字2 如果exit后面无数字,终止退出状态取决于exit命令前面命令执行结果
实践1- 设定退出状态值
网段内主机地址的存活性探测
[root@192 ~]# ping -c1 -W1 10.0.0.12 &> /dev/null && echo '10.0.0.12 is up' || (echo '10.0.0.12 is unreachable'; exit 1)
10.0.0.12 is up
[root@192 ~]# ping -c1 -W1 10.0.0.13 &> /dev/null && echo '10.0.0.13 is up' || (echo '10.0.0.13 is unreachable'; exit 6)
10.0.0.13 is unreachable
[root@192 ~]# echo $?
6服务器网址探测
[root@192 ~]# curl -s -o /dev/null baidu.com &> /dev/null && echo 'baidu.com is up' || (echo 'baidu.com is unreachable'; exit 7)
baidu.com is up
[root@192 ~]# curl -s -o /dev/null baidu.com1 &> /dev/null && echo 'baidu.com1 is up' || (echo 'baidu.com1 is unreachable'; exit 7)
baidu.com1 is unreachable
[root@192 ~]# echo $?
7
实践2-嵌套循环中exit退出程序
查看脚本内容
[root@localhost ~]# cat exit_multi_for.sh
#!/bin/bash
# 功能:exit退出脚本程序# 外层循环遍历1-5
for var1 in {1..5}
do# 内层循环遍历a-dfor var2 in {a..d}do# 判断退出条件,var1是2或者var2是c就退出内层循环if [ $var1 -eq 2 -o "$var2" == "c" ]thenexit 111elseecho "$var1 $var2"fidone
done
脚本执行效果
[root@192 ~]# /bin/bash exit_multi_for.sh
1 a
1 b
[root@192 ~]# echo $?
111
结果显示:一旦匹配到任何一个信息,就直接退出程序,而且状态码还是我们定制的。
小结