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. JDBC入门程序总结

    JDBC本质 只是一个接口 每个数据库的规范 就是实现类的接口 其实是官方 定义的一套操作所有关系型数据库的规则,就是接口,各个数据库厂商去实现这套接口,提供数据库驱动jar包, 我们可以使用这套接口 ...

  2. CTFshow萌新赛-千字文

    打开靶机 下载完成后,为一张二维码图片 使用StegSolve 解出隐写图像 保存后使用PS或其他工具去除白边 然后使用脚本分割这个图像(25*25) from PIL import Image im ...

  3. [USACO2011 Feb] Cow Line

    原题链接https://www.lydsy.com/JudgeOnline/problem.php?id=3301 康拓展开和逆展开的模板题. #include<iostream> #in ...

  4. IPC图像处理项目流程图

    网络摄像机IPC图像处理项目流程图:

  5. 【分享】每个 Web 开发者在 2021 年必须拥有 15 个 VSCode 扩展

    为什么VSCode如此受欢迎 Visual Studio Code在开发人员中迅速流行起来,它是最流行的开发环境,可定制性是其流行的原因之一. 因此,如果你正在使用VSCode,这里有一个扩展列表,你 ...

  6. 阿里云VPC网络内网实例通过SNAT连接外网

    场景: 1.有多个ECS实例,其中A实例有公网IP,可以上外网 其它实例没有公网IP,不能上外网 2.所有实例在一个交换机,也就是一个网络(172.16.0.0/16) 实例 内网IP 外网IP A ...

  7. Wi-Fi IoT套件连PCF8563实现电子钟功能

    首先跟同样新入手单片机开发的小伙伴分享一点I2C通信的知识.我估计大部分入手开发板的小伙伴都有一定程序开发的能力,但是底层开发可能是新接触,我看有的小伙伴配置开发环境都有障碍,其实并不是多复杂,只是首 ...

  8. jQuery 留言表单验证

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 详解Mybatisplus

    详解Mybatisplus ​ MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 特性: 无侵入**:只 ...

  10. poj2185Milking Grid

    Milking Grid Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 8325   Accepted: 3588 Desc ...