Linux与Shell学习--shell系列10--流程控制3(while循环)

目录

1、while的基本用法

2、无限循环


         while是循环的语句,用于不断执行一系列的任务,当满足条件时进入循环,直到满足循环再跳出循环。

先看下shell的基本语法:

while 判断条件      #判断进入和退出循环的条件语句,满足该条件时进入下面的子代码中,执行完子代码后再进行while条件判断,直到不满足while的条件语句,不走子代码模块,直接结束循环。
do                 #语法格式
    子代码模块       #子代码模块,满足while条件后,就进入到子代码模块中
done               #语法格式

1、while的基本用法


比如我们想执行3次某个数字,就可以用while循环。

#!/bin/bash

i=0               #给i赋值为0
while(($i<2))     #开始进行判断 i(i=0) < 2,进入循环中
do                #语法格式
  let "i++"       #这行代码就是让i进行累加,第一次i为0,i+1=1然后得到结果为1  再赋值给i  此时i就=1了,现在再跳出循环,去进行while的循环判断 (具体代码流转见下方)
done              #语法格式
echo $i           #输出i的值

 

执行结果截图:

首先i=0,然后发现while判断0<2,然后进入到while的子代码中,进行i++的计算,刚刚第一遍循环结束后,i的值现在为1,此时去进行while循环的判断,发现满足循环条件i(i=1)<2,然后再进入到循环中,去进行i++(就是i = i + 1)的赋值,此时得到结果为2,然后去进行while循环条件的判断,发现i(i=2) < 2,不满足了,这时候就不执行子代码了。直接打印i的值出来
输出的结果为:i=2

这里再把流程简单的描述下

第一次循环:i=0 while的判断条件为i<2,满足条件,进行子代码操作i++,此时i=1

第二次循环:i=1 while的判断条件为i<2,满足条件,进行子代码操作i++,此时i=2

第三次循环:i=2 while的判断条件为i<2,不满足条件,不进行子代码操作,循环结束,打印结果为i=2

       总结下就是,只要满足while循环的条件,就回去while的子代码中进行一遍操作,最后出来的值,再去进行while的循环判断,如果还满足就继续执行,直到最后出来的值不满足while的循环

     所有的循环语句必须考虑循环控制的问题,如果循环条件能一直满足,就会跳不出循环一直执行下去,程序将进入无限循环状态或发生内存溢出的问题。此时可以用ctrl+C强制结束。

如果上面能理解的话,这时候我们把echo $i写到循环里,看看最后的输出结果是什么?

#!/bin/bash

i=0               #给i赋值为0
while(($i<2))     #开始进行判断 i(i=0) < 2,进入循环中
do                #语法格式
  let "i++"       #这行代码就是让i进行累加,第一次i为0,i+1=1然后得到结果为1  再赋值给i  此时i就=1了,现在再跳出循环,去进行while的循环判断 (具体代码流转见下方)
  echo $i         #输出i的值
done              #语法格式

 执行结果:


打印结果为:1  2

这个为啥会有两个结果呢?因为echo在while的循环条件中,每次+1后都会打印一次值出来

第一次循环:i=0 while的判断条件为i<2,满足条件,进行子代码操作i++,此时i=1,然后打印结果 1

第二次循环:i=1 while的判断条件为i<2,满足条件,进行子代码操作i++,此时i=2  然后打印结果 2

第三次循环:i=2 while的判断条件为i<2,不满足条件,不进行子代码操作,循环结束,因为已经走不到循环操作里了,所以就不会再去打印了
 

2、无限循环

如果想让他无限循环下去,可以让子代码模块的条件无论怎样执行完后都不会满足while条件,这样就会一直执行下去,或者可以写成以下样式:

while :      #判断条件直接写成:
do           #语法格式
    子代码模块 #子代码模块
done         #语法格式

或者

while true      #while条件永远为true
do              #语法格式
    子代码模块   #子代码模块
done           #语法格式

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘阿童木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值