【shell】shell脚本实战-循环的控制

举报
互联网老辛 发表于 2021/06/08 23:24:09 2021/06/08
【摘要】 文章目录 前言break和continue的区别三种方式的对比案例1. break 跳过整个循环2. continue跳过当次循环3. exit退出脚本 实战案例总结 前言 在我们使用循环语句进行循环的过程中,有时候需要在未达到循环结束条件时强制跳出循环,那么Shell给我们提供了四个命令来控制循环语句 continue 跳过当次循环 br...

前言

在我们使用循环语句进行循环的过程中,有时候需要在未达到循环结束条件时强制跳出循环,那么Shell给我们提供了四个命令来控制循环语句

continue 跳过当次循环
break 跳过整个循环
exit 退出脚本
return 退出函数

break和continue的区别

区别:
Break:跳出整个循环
Continue:跳过本次循环,进行下次循环

概述:
break概述:跳出当前整个循环或结束当前循环,在for、while等循环语句中,用于跳出当前所在的循环体,执行循环体之后的语句,后面如果什么也不加,表示跳出当前循环等价于break 1,也可以在后面加数字,假设break 3表示跳出第三层循环

continue概述:忽略本次循环剩余的代码,直接进行下一次循环;在for、while等循环语句中,用于跳出当前所在的循环体,执行循环体之后的语句,如果后面加的数字是1,表示忽略本次条件循环,如果是2的话,忽略下来2次条件的循环

三种方式的对比案例

在这里因为还没有学习到函数,所以我们先对比三种break,continue,exit对脚本的影响

1. break 跳过整个循环

break脚本案例:

[root@ecs-c13b ~]# cat break.sh 
#!/bin/bash
for n in 1 2 3 4 5
do if [ $n -eq 3  ] then break fi echo $n
done
echo ok

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

执行结果

[root@ecs-c13b ~]# bash break.sh 
1
2
ok

  
 
  • 1
  • 2
  • 3
  • 4

可以看到,执行到等于3的时候,直接就结束了,跳出循环,输出了ok

2. continue跳过当次循环

continue脚本案例:


[root@ecs-c13b ~]# cat con.sh 
#!/bin/bash
for n in 1 2 3 4 5
do if [ $n -eq 3  ] then continue fi echo $n
done
echo ok

执行结果: 
[root@ecs-c13b ~]# bash con.sh 
1
2
4
5
ok

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

注: 可以看到,用了continue,只是在等于3的时候,没有输出3,跳过了一次循环,后面又继续运行。

3. exit退出脚本
[root@ecs-c13b ~]# cat ex.sh 
#!/bin/bash
for n in 1 2 3 4 5
do if [ $n -eq 3  ] then exit fi echo $n
done
echo ok

直接退出了循环: 
[root@ecs-c13b ~]# bash ex.sh 
1
2

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

实战案例

  1. 自动化脚本菜单页面

脚本案例:

[root@ecs-c13b ~]# cat zd.sh 
#! /bin/sh
while true
do
	 echo "*******************************"
	 echo "Please select your operation:"
	 echo " 1 Copy"
	 echo " 2 Delete"
	 echo " 3 Backup"
	 echo " 4 Quit"
	 echo "*******************************"
	 read choise
 case $choise in 1)
	 continue #这里加了continue后,后面的echo命令就不执行了
	 echo "your selection is Copy"
	 ;; 2) echo "your selection is Delete"
	 ;; 3)
	 echo "your selection is Backup"
	 ;; 4)
	 echo "Exit ..."
	 break #跳出循环体
	 ;; *)
 	echo "invalide selection,please try again"
  esac
done


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

运行结果展示:

[root@ecs-c13b ~]# bash zd.sh 
*******************************
Please select your operation:
 1 Copy
 2 Delete
 3 Backup
 4 Quit
*******************************
1   #选择1的时候遇到continue跳过循环,没有执行后面的内容,但也没有结束循环
*******************************
Please select your operation:
 1 Copy
 2 Delete
 3 Backup
 4 Quit
*******************************
4## 选择4的时候遇到break,结束循环
Exit ...
[root@ecs-c13b ~]#

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

总结

循环体的控制,一共四个命令,在使用的过程中,要合理选择,遇到跳过某次循环选continue,遇到跳出循环选break, 结束循环使用exit。 在后面的练习中多多使用即可。

文章来源: zmedu.blog.csdn.net,作者:互联网老辛,版权归原作者所有,如需转载,请联系作者。

原文链接:zmedu.blog.csdn.net/article/details/107995857

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。