While 循环

可以将 While 循环称为 "条件循环"

While 循环语法

# 条件为 true 就执行循环体代码,条件变为 false 循环结束
while 条件
do
命令1
命令2
命令3
...
done # 示例
#!/bin/bash count=0 while [ $count -lt 5 ]
do
echo $count
let count++ # 5
done

Until 循环语法

# 条件为 false 就执行循环体代码,条件变为 true 循环结束
until 条件
do
命令1
命令2
命令3
...
done # 示例
#!/bin/bash count=0 until [ $count -eq 5 ]
do
echo $count
let count++ # 5
done

While 循环关键字

Break:立即终止本层循环

Continue:终止本次循环

#!/bin/bash

count=0

while [ $count -lt 5 ]  # 1 < 5
do
if [ $count -eq 3 ];then
# break
let count++
continue
fi
echo $count
let count++ # 3
done

总结:结束 while 循环的两种方案

①. — 在循环体代码中把某个值改掉,让 While 循环条件变为假

[root@zzzwqh wqh05]# cat test.sh
#!/bin/bash count=0
while [ $count -lt 3 ]
do
echo 1111
count=100
echo 2222
echo 3333 done # 此时循环体内代码会执行完,之后结束脚本
[root@zzzwqh wqh05]# ./test.sh
1111
2222
3333
[root@zzzwqh wqh05]#

②. — break,直接退出本层 While 循环

[root@zzzwqh wqh05]# cat test.sh
#!/bin/bash count=0
while [ $count -lt 3 ]
do
echo 1111
#count=100
break
echo 2222
echo 3333 done # 此时循环体内代码不会执行完,break 后的代码不会执行
[root@zzzwqh wqh05]# ./test.sh
1111
[root@zzzwqh wqh05]#

③. — 延伸,多层嵌套时,设置相同 While 循环条件,退出循环时,一起退出

# 正常情况下,break 结束嵌套多层的循环,要写很多层
while 条件1
do
while 条件2
do
while 条件3
do
break
done
break
done
break
done # 把条件改为 false
tag=true
while $tag
do
while $tag
do
while $tag
do
tag=false
done
done
done

While 循环示例

Wget 测试网络

[root@zzzwqh wqh05]# cat check_web.sh
#!/bin/bash [ $# -ne 1 ] && echo "只能输入一个参数" && exit url=$1
count=0 while true
do
echo "=========>$count"
if [ $count -eq 3 ];then
echo "报警:$url is dead"
break
fi wget --timeout=1 --tries=3 $url -q
if [ $? -eq 0 ];then
echo "$url is ok"
break
else
let count++
fi
done
[root@zzzwqh wqh05]# [root@zzzwqh wqh05]# ./check_web.sh
只能输入一个参数
[root@zzzwqh wqh05]# ./check_web.sh www.baidu.com
=========>0
www.baidu.com is ok
[root@zzzwqh wqh05]# ./check_web.sh www.zzzwqh.com.cn
=========>0
=========>1
=========>2
=========>3
报警:www.zzzwqh.com.cn is dead

读取文件按行打印

[root@zzzwqh wqh05]# cat 6.sh
#!/bin/bash while read line
do
echo $line
done < a.txt
[root@zzzwqh wqh05]# ./6.sh
11111 1:1 1
22222
3333
4444
[root@zzzwqh wqh05]#

动态监测系统状态

[root@zzzwqh ~]# while :;do free;sleep 0.5;clear;done

For 循环

可以将 For 循环称为 "取值循环"

Shell 风格语法

for i in value1 value2 value3
do
echo $i
done # 示例
[root@zzzwqh wqh05]# cat example.sh
#!/bin/bash for i in "aaa" 222 "ccc"
do
echo $i
done # 取范围
[root@zzzwqh wqh05]# example.sh
#!/bin/bash for i in {5..1}
do
echo $i
done for i in {a..z}
do
echo $i
done

C 语言风格语法

# 语法格式
#!/bin/bash
for ((i=0;i<3;i++))
do
echo "命令1"
echo "命令2"
echo "命令3"
done

Break & Continue 适用于 For 循环

# A-Z 忽略 C
[root@zzzwqh wqh05]# cat 9.sh
#!/bin/bash for i in {A..Z}
do
if [ $i == "C" ];then
# break
continue
fi
echo $i
done
[root@zzzwqh wqh05]#

For 循环示例

统计指定目录下文件的类型

[root@k8s-master 828]# cat file_type_sum.sh
#!/bin/bash
path=$1
block_type=0
regular_type=0
symbolic_type=0
directory_type=0
character_type=0 [ $# -ne 1 ] && echo "需要指定一个目录" && exit for i in `ls $path`
do
[ -b /$path/$i ] && let block_type++
[ -L /$path/$i ] && let symbolic_type++
[ -d /$path/$i ] && let directory_type++
[ -f /$path/$i ] && let regular_type++
[ -c /$path/$i ] && let character_type++
done echo "块文件:$block_type"
echo "普通文件:$regular_type"
echo "软链接文件:$symbolic_type"
echo "目录文件:$directory_type"
echo "字符设备文件:$character_type"

While & For 循环的更多相关文章

  1. 【.net 深呼吸】细说CodeDom(8):分支与循环

    有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...

  2. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  3. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  4. 模仿Linux内核kfifo实现的循环缓存

    想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...

  5. 【JS基础】循环

    for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被 ...

  6. 【python之路4】循环语句之while

    1.while 循环语句 #!/usr/bin/env python # -*- coding:utf-8 -*- import time bol = True while bol: print '1 ...

  7. To Java程序员:切勿用普通for循环遍历LinkedList

    ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...

  8. JavaScript单线程和浏览器事件循环简述

    JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...

  9. .NET基础 一步步 一幕幕[循环、逻辑语句块]

    循环.逻辑语句块   好久不写博客了,断更了好几天了,从上周五到今天,从北京到上海,跨越了1213.0公里,从一个熟悉的城市到陌生的城市,还好本人适应力比较好,还有感谢小伙伴的接风咯,一切都不是事,好 ...

  10. Linux进程管理及while循环

    目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...

随机推荐

  1. 【Oracle】10g查看trace生成文件位置及文件名称

    select  u_dump.value || '/' ||  db_name.value || '_ora_' ||  v$process.spid ||  nvl2(v$process.trace ...

  2. Java中的NIO进阶

    目录 前言 NIO与多线程 Readable和Writeable的空触发 请求与返回的处理 事件的处理机制 NIO多线程使用的一个例子 前言 之前一篇文章简单介绍了NIO,并附了一个简单的例子,但是自 ...

  3. SAP密码策略挺有意思

    很多系统管理员可能都知道通过RZ10可以配置SAP的密码策略.例如:密码里包含的大小写字符.数字.特殊字符.密码长度.密码不能和前多少次的密码相同.不能和之前的密码有多少位相似等但是你知道吗?其实还有 ...

  4. 1V转3.3V稳压供电的芯片电路图

    1V转3.3V供电是简单的,仅需要一个芯片和三个外围元件即可组成这样的一个1V转3.3V的电路图和升压电路了.可以持续稳定地供电3.3V给模块或者MCU灯电路.让后端工作稳定,同时也能控制电路的功耗. ...

  5. 05. struts2中为Action属性注入值

    概述 struts2为Action中的属性提供了依赖注入功能 在struts2的配置文件中,我们可以很方便地为Action中的属性注入值.注意:属性必须提供get,set方法. 配置 <acti ...

  6. TCP为什么要三次握手与四次分手?

    TCP协议简介 TCP协议是五层协议中运输层的协议,下面依赖网络层.链路层.物理层,对于一个报文想发到另一台机器(假设是服务器)上对等层,每一个所依赖的层都会对报文进行包装,例如TCP协议就依赖网络层 ...

  7. ResponseEntity和@ResponseBody以及@ResponseStatus区别

    看的迷迷糊糊的 https://www.jdon.com/springboot/responseentity.html

  8. 精通MySQL之锁篇

    老刘是即将找工作的研究生,自学大数据开发,一路走来,感慨颇深,网上大数据的资料良莠不齐,于是想写一份详细的大数据开发指南.这份指南把大数据的[基础知识][框架分析][源码理解]都用自己的话描述出来,让 ...

  9. Language Guide (proto3) | proto3 语言指南(五)使用其他消息类型

    Using Other Message Types - 使用其他消息类型 可以将其他消息类型用作字段类型.例如,假设您希望在每个SearchResponse消息中包含Result消息--为此,您可以在 ...

  10. tp6.0配置站点后无法访问

    1.安装composer中国镜像composer config -g repo.packagist composer https://packagist.phpcomposer.com2.执行comp ...