文档章节

for、while循环、break、continue、exit

asnfuy
 asnfuy
发布于 2019/11/20 22:41
字数 896
阅读 22
收藏 0

来源:https://blog.csdn.net/Powerful_Fy

for、while循环

for循环语法:for 变量名 in 条件; do …; done

示例一:打印1-100的数字并求和

#!/bin/bash
sum=0
for i in `seq 1 100`
do
	sum=$[$sum+$i]
	echo $i
done
echo $sum

seq1 2 10:打印结果1,3,5,7,9(2表示步长,打印结果间隔为2)

seq10 -2 1:打印结果10,8,6,4,2(倒序打印步长为负)

seq -w 1 10:打印结果01,02,03,04,05,06,07,08,09,10(-w 表示等宽)

示例二:打印指定目录下的文件

#!/bin/bash
cd /etc
for i in `ls /etc`
do
	if [ -f $i ]
	then
		ls -l $i
	fi
done

while循环语法:while 条件; do … ; done

示例一:平均1分钟负载大于5时,发送邮件

#!/bin/bash
while :
do
        load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d . -f1`
        if [ $load -gt 5 ]
        then
                d=`date +%F_%T`
                top -nb1|mail -s "$d load is high: $load" asnfy@qq.com
        fi
        sleep 30
done

示例二:判断输入内容是否为空或包含非数字

#!/bin/bash
while :
do
    read -p "Please input a number: " n
    if [ -z "$n" ]
    then
		echo "you need input sth."
		continue
    fi
    n1=`echo $n|sed 's/[0-9]//g'`
    if [ -n "$n1" ]
    then
		echo "you just only input numbers."
        continue
    fi
    break
done
echo "you input number is $n"

#如果输入的内容为空为包含非数字,continue跳出重新执行,否则break结束循环

补充:

当使用for遍历一个文件中的每行内容时(for i in `cat test`),如果某行中有一个或多个空格,这行的内容就会被当做两行或多行打印,为了避免这种情况可以使用while来循环输出文件中的每行内容

示例:

#!/bin/bash
cat test.txt|while read i
do
	echo $i
done

#使用while遍历文件中的内容,即使某行有空格,也会被正常打印

break、continue、exit

break:直接结束循环

#!/bin/bash
for i in `seq 1 5`
do
	echo "第一次输出:$i"
	if(($i==3))
	then
		break
	fi
	echo "第二次输出:$i"
done
echo "循环结束"

执行结果:

[root@linux ~]# sh a.sh 
第一次输出:1
第二次输出:1
第一次输出:2
第二次输出:2
第一次输出:3
循环结束

continue:忽略后面的代码,从新开始循环

#!/bin/bash
for i in `seq 1 5`
do
	echo "第一次输出:$i"
	if(($i==3))
	then
		continue
	fi
	echo "第二次输出:$i"
done
echo "循环结束"

执行结果:

[root@linux ~]# sh a.sh 
第一次输出:1
第二次输出:1
第一次输出:2
第二次输出:2
第一次输出:3
第一次输出:4
第二次输出:4
第一次输出:5
第二次输出:5
循环结束

注意:循环支持嵌套,如果一个循环中嵌套了多个循环,break或continue只能作用于所在的某个循环中

exit:直接退出脚本

#!/bin/bash
for i in `seq 1 5`
do
	echo "第一次输出:$i"
	if(($i==3))
	then
		exit	
	fi
	echo "第二次输出:$i"
done
echo "循环结束"

执行结果:

[root@linux ~]# sh a.sh 
第一次输出:1
第二次输出:1
第一次输出:2
第二次输出:2
第一次输出:3

#循环外的echo语句没有输出,当脚本中遇到exit,会直接退出,后面所有内容都不再执行

补充: 当脚本遇到exit直接退出后,echo $? 查看执行结果会显示0,表示执行成功,所以一般使用exit会在后面加上指定的非0数字,方便调用结果(比如:exit 5)

© 著作权归作者所有

asnfuy
粉丝 0
博文 29
码字总数 44232
作品 0
成都
私信 提问
加载中

评论(0)

一篇博客分清shell中的状态返回值-return-break-continue-exit

一篇博客分清shell中的状态返回值-return-break-continue-exit 一、break、continue、exit、return的区别和对比 条件与循环控制及程序返回值命令知识表 二、break、continue、exit功能执行流...

于学康
2017/08/01
0
0
Python中的循环退出举例及while循环举例

循环退出 for循环: for else for 循环如果正常结束,都会执行else语句。 脚本1: #!/usr/bin/env python for i in xrange(10): print i else: print "main end" 结果: [root@localhost 2017......

枫叶云
2017/12/27
0
0
20.10 for循环;20.11 while循环(上);20.12 while循环(下);20.13 break跳出循环;20.14 ;20.15

20.10 for循环 案例1 1. 编写for循环脚本:计算1到100所有数字和: [root@hao-01 ~]# vi for1.sh 添加内容: #!/bin/bash sum=0 for i in do echo "$sum + $i" sum=$[$sum+$i] echo $sum d......

主内安详
2017/09/18
0
0
7月13日任务 for、while、break跳出、ontinue结束、exit退出

20.10 for循环 语法:for 变量名 in 条件; do …; done 案例1:计算1到100的和 案例2(文件列表循环): 注意: for循环 空格和回车作为分隔符 20.11 while循环 语法: while 条件; do … ; done 案...

吕湘颖
2018/08/16
6
0
2018-4-19 17周2次课 for循环、while循环、break、continue、exit

20.10 for循环 ·语法:for 变量名 in 条件; do …; done 案例1 计算1到100数字的和 #!/bin/bashsum=0for i in do sum=$[$sum+$i] ##核心语句 echo $idoneecho $sum 案例2 列出/etc/下的目录...

alexis7gunner
2018/10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

郑州开水泥发票

郑州开水泥发票【132 * 50 52 * 90 89】罗生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridge,...

zhangyongli
4分钟前
15
0
OSChina 周四乱弹 —— 失业后的阳光太刺眼了

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @大又 :分享Jack Stauber的单曲《Fighter》 《Fighter》- Jack Stauber 手机党少年们想听歌,请使劲儿戳(这里) @theLovelyBugfly :笑死我...

小小编辑
13分钟前
12
0
手把手教你搭建 ELK 实时日志分析平台

本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。 Elasticsearch ...

武培轩
54分钟前
52
0
直播报名 | Service Mesh技术实践分享

近年来,云原生(Cloud Native)逐渐成为一个技术领域内的流行语,热度居高不下。企业正在加速拥抱云原生架构,以此缩短产品发布周期、敏捷响应市场需求,继而从云计算服务中提炼新的价值和技...

百度开发者中心
今天
57
0
Qt 实现QTableView单元格多按钮效果

实现效果预览: 思路: 使用Qt的委托类独自渲染表格的某一列,如上图字段2的那一列。该一个单元格放入多个按钮,重写 QStyledItemDelegate 委托类 paint 方法即可实现上图效果。 代码: 委托...

剑是SR剑
今天
71
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部