精华内容
下载资源
问答
  • while循环可能一次都不运行
    千次阅读
    2022-04-30 10:32:40

    shell脚本—While循环

    1.While循环基本概述

    1.什么是while

    while在shell中也是负责循环的语句,和for一样

    2.while循环和for循环怎么选?

    因为功能一样,很多人在学习和工作中的脚本遇到循环到底该使用for还是while呢?

    如果不知道,就会出现遇到循环就只用for,一遇到循环就用while的情况。到底选for还是while好:

    1.知道循环次数的用for,比如循环20次

    2.如果不知道要循环多少次的,那就用while,比如猜数字游戏,每个人猜对的次数是未知的

    3.while循环基础语法

    #当条件测试成立(条件测试为真),执行循环
    while  条件测试
    do
          循环体
    done
    
    #示例:
    [root@manage while]# cat while-0.sh 
    #!/bin/bash
    while true
    do
        echo "123"
    done
    
    #输出123,一直输出
    

    2.while循环练习

    1.比较for循环和while循环区别

    #用for循环和while循环从1-10
    [root@manage while]# cat while-01.sh 
    #!/bin/bash
    #for i in {1..10}
    #do
    #echo $i
    #done
    i=1
    while [ $i -le 10 ]
    do
        echo $i
        let i++
    done
    
    
    #用while循环,从1-9 ,从9-1
    [root@manage while]# cat while-02.sh 
    #!/bin/bash
    #用for循环实现
    for_numb(){
    a=1
    b=9
    for i in {1..9}
    do
         echo $a + $b = $[ $a + $b ]
         let a++
         let b--
    done
    }
    
    #用while循环实现
    a=1
    b=9
    while [ $a -le 9 ]
    do
           echo $a + $b = $[ $a + $b ]
           let a++
           let b--
    done
    
    [root@manage while]# sh while-02.sh
    1 + 9 = 10
    2 + 8 = 10
    3 + 7 = 10
    4 + 6 = 10
    5 + 5 = 10
    6 + 4 = 10
    7 + 3 = 10
    8 + 2 = 10
    9 + 1 = 10
    
    
    #实现乘法
    [root@manage while]# cat while-02.sh
    #!/bin/bash
    a=9
    while [ $a -ge 1 ]
    do
          echo "$a * $a = $[ $a * $a ]"
          let a--
    done
    
    [root@manage while]# sh while-02.sh
    9 * 9 = 81
    8 * 8 = 64
    7 * 7 = 49
    6 * 6 = 36
    5 * 5 = 25
    4 * 4 = 16
    3 * 3 = 9
    2 * 2 = 4
    1 * 1 = 1
    
    

    2.循环嵌套整数比对,判断用户输入的数值是否大于0,如果大于0,则三秒输出一次大于

    [root@manage while]# cat while-03.sh 
    #!/bin/bash
    read -p "请输入数字:" num
    while [ $num -gt 0 ]
    do
          echo "大于0"
          sleep 3
    done
    
    [root@manage while]# sh while-03.sh
    请输入数字:1
    大于0
    大于0
    大于0
    
    

    3.判断/tmp/1.txt文件是否存在,如果存在退出,如果不存在则3s输出一次 not found

    [root@manage while]# cat while-04.sh 
    #!/bin/bash
    #第一种写法
    first(){
    if [ -f /tmp/1.txt ];then
                exit
          else
               while  true
            do
               echo "/tmp/1.txt not found"
               sleep 3
               if [ -f /tmp/1.txt ];then
                   exit
               fi
    done
    fi
    }
    
    #第二种写法
    while [ ! -f /tmp/1.txt ]
    do
            echo "/tmp/1.txt not found"
            sleep 3 
    done
    
    
    

    4.判断用户输入的用户名,如果不是root,则让用户一直输入

    [root@manage while]# cat while-05.sh
    #!/bin/bash
    read -p "请输入用户名:" User
    while [ $User != "root" ]
    do
          read -p "请输入用户名:" User
    done
    
    [root@manage while]# sh while-05.sh
    请输入用户名:etret
    请输入用户名:root
    
    
    #带正则匹配的,观摩一下就行
    [root@manage while]# cat while-06.sh 
    #!/bin/bash
    read -p "请输入用户名:" User
    #记得正则匹配都需要双括号[[]],.代表一个字符,^r...$:只能输入r开头,且是4个字符
    while [[ ! $User =~  ^r...$ ]]
    do
          read -p "请输入用户名:" User
    done
    
    
    [root@manage while]# sh while-06.sh
    请输入用户名:tttt
    请输入用户名:tttt
    请输入用户名:r
    
    

    5.while读取文件

    [root@manage while]# cat while-07.sh
    #!/bin/bash
    #while读入文件,默认按行读入,for默认按空格读入文件,用IFS调整默认分隔符
    while read file
    do
         echo $file
         sleep 3
    done</etc/passwd
    
    [root@manage while]# sh while-07.sh 
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    

    3.循环中的控制语句

    # exit
    # break
    # continue
    
    

    在我们使用循环语句进行循环的过程中,有时候需要在未达到循环结束条件时强制跳出循环,就需要用到:exit、break、continue

    1.exit退出整个程序,当脚本碰到exit时,直接退出,剩余不管有多少代码都不执行

    [root@manage while]# cat while-08.sh
    #!/bin/bash
    for i in {1..3}
    do
         echo "123"
         exit
         echo "456"
    done
         echo "结束"
    
    [root@manage while]# sh while-08.sh
    123
    
    

    2.break跳出本次循环,执行循环之后的代码

    [root@manage while]# cat while-08.sh
    #!/bin/bash
    for i in {1..3}
    do
         echo "123"
         break
         echo "456"
    done
         echo "结束"
         
    [root@manage while]# sh while-08.sh
    123
    结束
    
    

    3.continue忽略本次循环剩余的所有代码,直接进行下一次循环,直到循环结束,然后继续循环之后的代码

    [root@manage while]# cat while-08.sh
    #!/bin/bash
    for i in {1..3}
    do
         echo "123"
         continue
         echo "456"
    done
         echo "结束"
         
    [root@manage while]# sh while-08.sh
    123
    123
    123
    结束
    
    

    4.循环控制语句练习

    需求1:循环嵌套continue,打印1-9当数值为5则跳过本次循环,继续下一次循环,请人别用for和while实现

    #for循环实现
    [root@manage while]# cat while-09.sh 
    #!/bin/bash
    for i in {0..8}
    do 
          let i++
        if [ $i -eq 5 ];then
          continue
        fi
          echo $i
    done
    
    
    #while循环实现
    [root@manage while]# cat while-09.sh
    #!/bin/bash
    
    i=0
    while [ $i -le 8 ] 
    do 
        let i++
        if [ $i -eq 5 ];then
        continue
        fi
        echo $i
    done
    
    [root@manage while]# sh while-09.sh
    1
    2
    3
    4
    6
    7
    8
    9
    
    

    需求2:循环嵌套break,打印1-9当数值为5则停止,请分别使用for和while实现

    #用for循环实现
    [root@manage while]# cat while-10.sh 
    #!/bin/bash
    for i in {0..8}
    do 
          let i++
        if [ $i -eq 5 ];then
          break
        fi
          echo $i
    done
    
    #用while循环实现
    [root@manage while]# cat while-10.sh 
    #!/bin/bash
    i=0
    while [ $i -le 8 ] 
    do 
        let i++
        if [ $i -eq 5 ];then
        break
        fi
        echo $i
    done
    
    [root@manage while]# sh while-10.sh
    1
    2
    3
    4
    
    

    需求3:使用while读入文件的方式创建用户

    [root@manage while]# cat while-11.sh 
    #!/bin/bash
    while read line
    do
          id $line &>/dev/null
          if [ $? -eq 0 ];then
             echo $line用户已存在
             continue
          else
          useradd $line
             echo "$line用户已创建" 
          fi
    done < user.txt
    
    
    [root@manage while]# cat user.txt 
    qqq
    ttt
    ddd
    
    

    需求4:使用while读入文件方式,批量创建用户以及密码:文件格式:username:password

    [root@manage while]# cat user.txt 
    qqq:111
    ttt:111
    ddd:111
    
    [root@manage while]# cat while-12.sh 
    #!/bin/bash
    while read line
    do
           User=$(echo $line | awk -F ":" '{print $1}')
           Pw=$(echo $line | awk -F ":" '{print $2}')
           echo $User
           echo $Pw
           id $User &>/dev/null
           if [ $? -eq 0 ];then
               continue
           else
               useradd $User
               echo "$Pw" | passwd --stdin $User &>/dev/null
           fi
           sleep 1
    done < user.txt
    
    

    需求5:猜数字游戏

    1)随机输出一个1-100的数字   echo $(($RANDOM%100+1))
    2)要求用户输入的必须是数字(数字处加判断)
    3)如果比随机数小则提示比随机数小了 大则提示比随机数大了
    4)正确则退出 错误则继续死循环
    5)最后统计猜了多少次(猜对了多少次,失败多少次)
    
    [root@manage while]# cat while-13.sh 
    #!/bin/bash
    SJ=$((RANDOM%100+1))
    i=1
    while true
    do
         read -p "请输入你要猜的数字:" Action
         if [ $Action -eq $SJ ];then
              echo "恭喜你,猜对了"
              break
         elif [ $Action -lt $SJ ];then
              echo "猜小了"
         else
              echo "猜大了"
         fi
            let i++
    done
              echo "你总工猜了$i次,失败了$(($i-1))次"
    
    [root@manage while]# sh while-13.sh
    请输入你要猜的数字:18
    猜大了
    请输入你要猜的数字:8
    猜大了
    请输入你要猜的数字:4
    猜大了
    请输入你要猜的数字:2
    恭喜你,猜对了
    你总工猜了4次,失败了3次
    
    

    需求6:在一个2000多行数据文件,然后有10个新的文件,1-5行数据放到第一个文件里,6-10行数据 放到第二个文件里…46-50数据放到第10个文件里。然后51-55数据在放到第一个文件里。如何实现?

    #创建文件
    seq 2000 > file.txt
    [root@manage while]# cat while-14.sh 
    #!/bin/bash
    while true
    do
            for i in $(seq 10)
            do
                 head -5 file.txt >> file_$i.txt
                 sed -i '1,5d' file.txt
                    if [ ! -s file.txt ];then
                          exit
                    fi
            done
    done
    
    
    
    #另一种写法
    #!/bin/bash
    a=0
    b=0
    while [ $b -lt 2000 ]
    do
            file=num.txt
            while [ $a -lt 10 ]
            do
                    a=$[$a+1]
                    b=$[$b+5]
                    echo "$a $b"
                    line=$(awk "NR==$[$b-4],NR==$b" $file)
                    echo "$line">>${a}.txt
            done
            a=0
    done
    
    更多相关内容
  • Labview查看一次while循环运行的时间

    千次阅读 2018-10-19 20:07:18
    参考:http://www.21ic.com/app/test/201810/788332.htm 在while循环边框右键选择添加位移寄存器。

    参考:http://www.21ic.com/app/test/201810/788332.htm

    在while循环边框右键选择添加位移寄存器。

    展开全文
  • while循环和 for 循环不同的另种循环是 while 循环,while 循环不会迭代 list 或 tuple 的元素,而是根据表达式判断循环是否结束。比如要从 0 开始打印大于 N 的整数:while循环每次先判断 x < N,如果为True...

    while循环

    和 for 循环不同的另一种循环是 while 循环,while 循环不会迭代 list 或 tuple 的元素,而是根据表达式判断循环是否结束。

    比如要从 0 开始打印不大于 N 的整数:

    7bd54c898dd805fce683601e7c293948.png

    while循环每次先判断 x < N,如果为True,则执行循环体的代码块,否则,退出循环。

    在循环体内,x = x + 1 会让 x 不断增加,最终因为 x < N 不成立而退出循环。

    如果没有 x = x + 1 这一个语句,while循环在判断 x < N 时总是为True,就会无限循环下去,变成死循环,所以要特别留意while循环的退出条件。

    试一试:

    利用while循环计算100以内奇数的和。

    break退出循环

    用 for 循环或者 while 循环时,如果要在循环体内直接退出循环,可以使用 break 语句。

    比如计算1至100的整数和,我们用while来实现:

    f7eff332bb238ee59e0489a989e3c9ef.png

    咋一看, while True 就是一个死循环,但是在循环体内,我们还判断了 x > 100 条件成立时,用break语句退出循环,这样也可以实现循环的结束。

    试一试:

    利用 while True 无限循环配合 break 语句,计算 1 + 2 + 4 + 8 + 16 + ... 的前20项的和。

    continue继续循环

    在循环过程中,可以用break退出当前循环,还可以用continue跳过后续循环代码,继续下一次循环。

    假设我们已经写好了利用for循环计算平均分的代码:

    358c0132436e4dfc5667d2d636d16621.png

    现在老师只想统计及格分数的平均分,就要把 x < 60 的分数剔除掉,这时,利用 continue,可以做到当 x < 60的时候,不继续执行循环体的后续代码,直接进入下一次循环:

    2b44f3b1fb34bc3bd8e50f63c7dced58.png

    当我们使用break呢?

    2ad703f7c3d72bd7d97f80a182f4c7f2.png

    break和continue的关系:

    1、 都是跳出循环

    2、 break是当条件满足时,跳出的是整个循环,也就是代码不在执行了,不管后面有没有适合的时间,都不在执行了,也就是终止代码的执行。

    3、 continue是当条件满足时,跳出本次循环,继续下一次循环,并不会终止程序。

    试一试:

    对已有的计算 0 - 100 的while循环进行改造,通过增加 continue 语句,使得只计算奇数的和:

    多重循环

    在循环内部,还可以嵌套循环,我们来看一个例子:

    x 每循环一次,y 就会循环 3 次,这样,我们可以打印出一个全排列:

    9c06d41f453b4c44fae07605c5d2de5b.png

    试一试:

    对100以内的两位数,请使用一个两重循环打印出所有十位数数字比个位数数字小的数,例如,23(2 < 3)

    展开全文
  • 在检查while()条件是否为真之前,该循环首先会执行一次do{}之内的语句,然后在while()内检查条件是否为真,如果条件为真的话,就会重复do...while这个循环,直至while()为假。友情提示:文章最后,凯哥会附上本系列...

    原标题:基础C语言8:流程控制之循环执行while语句

    do...while 循环是 while 循环的变体。在检查while()条件是否为真之前,该循环首先会执行一次do{}之内的语句,然后在while()内检查条件是否为真,如果条件为真的话,就会重复do...while这个循环,直至while()为假。

    友情提示:文章最后,凯哥会附上本系列教程其他文章。欢迎查看

    一、格式

    do

    {语句;}

    while(表达式)

    注,do...while并不等价于for,当然也不等价于while

    二、执行顺序

    先执行do内的语句,再while的判断表达式是否正确,依次循环

    d5487475cf90e87df9c914daff925485.png

    三、举例

    用do...while求一元二次方程:

    #include

    #include

    int main(void)

    {

    double a,b,c;

    double delta;

    double x1,x2;

    char ch;

    do{

    printf("请输入一元二次方程的三个系数:\n");

    printf("a=");

    scanf("%lf",&a);

    printf("b=");

    scanf("%lf",&b);

    printf("c=");

    scanf("%lf",&c);

    delta=b*b-4*a*c;

    if(delta>0)

    {

    x1=(-b+sqrt(delta))/(2*a);

    x2=(-b-sqrt(delta))/(2*a);

    printf("有两个解,x1=%lf,x2=%lf\n",x1,x2);

    }

    else if(0==delta)

    {

    x1=x2=(-b)/(2*a);

    printf("有一个解,x1=x2=%lf\n",x1,x2);

    }

    else

    {

    printf("无解!");

    }

    printf("您想继续吗(Y/N):");

    scanf(" %c",&ch); //%c前面必须得加一个空格

    }

    while('y'==ch||'Y'==ch);

    return 0;

    }

    运行结果:

    69d497d1de92f3f0f060b3c1f2c4463e.png

    whiel语句和do..while语句的区别:

    我们从执行语句流程中可以看出。

    do..while语句,不管while表达式是否成立(真)都会执行一次do语句块代码

    while语句:只有当while表达式成立,才会进入循环体中。也就是执行while代码块。

    欢迎关注凯哥微信公众号:凯哥Java

    相关推荐:

    责任编辑:

    展开全文
  • for while循环练习

    千次阅读 2022-04-01 14:20:52
    即外层的总循环次数 col = 1 a = 1 ###控制空格的输出次数 while a 空格的输出条件 print(' ',end='') ##输出空格 a += 1 while col *的输出条件 print('*',end='') col += 1 print('') ###行每循环一次使下一次的...
  • Python中while循环

    千次阅读 2020-12-09 10:30:55
    while 简介Python 的循环有 for 和 while 两种,while 为条件控制循环,通过条件表达式控制循环结束。流程图如下:Python 中 while 语句的格式如下:while :【语句块】释:当 while 的 为 True 时运行【语句块】...
  • 循环是一段在程序中只出现一次,但可能会连续运行多次的代码。 循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环循环分类: while repeat loop 循环控制: leave 类似于 break,跳出,...
  • Java While循环 do-while循环用法

    千次阅读 2021-03-10 03:57:04
    循环语句就是让计算机根据条件做循环计算,在条件满足时继续循环,条件...如果计算结果为true,就把循环体内的语句执行遍,如果计算结果为false,那就直接跳到while循环的末尾,继续往下执行。do while循环的基...
  • Python While 循环语句

    千次阅读 2021-02-09 08:03:05
    Python While 循环语句Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:while判断条件:执行语句……执行语句可以是单个语句或语句块。...
  • c语言如何求三角形的面积_后端开发c语言求... while循环与do while循环的区别如下:1、循环结构的表达式不同while循环结构的表达式为:while(表达式){循环体};do while循环结构的表达式为:do{循环体;}while (条件...
  • while循环只能实现无限循环的编程

    千次阅读 2021-01-14 22:22:24
    20 )) 输出结果两行,依次为(1)____________ (2)____________ 【判断题】while循环只能实现无限循环的编程 【填空题】表达式 'abcab'.replace('a','yy') 的值为 ___________ 。 【简答题】王先生,40岁,工人。1年前患...
  • 我试图运行一While循环,以便不断做一些事情.目前,它所做的只是崩溃我的程序.这是我的代码:import tkinterdef a():root = tkinter.Tk()canvas = tkinter.Canvas(root, width=800, height=600)while True:print(...
  • C语言 while 循环嵌套-嗨客网

    千次阅读 2021-05-20 08:10:13
    C语言while循环嵌套教程C语言while循环嵌套详解语法while (cond1){// do somethingwhile (cond2){// do somethingwhile (cond3){// do something}}}参数参数描述whilewhile 循环使用的关键字。condwhile 循环的条件...
  • 含义:从每循环一次,count就加1,从0开始计数(0算1次)。 当计数到2就停止了,因为 count小于2时才循环。 如果将count=0,改为count=1试试。 结果:从1开始计数,循环1次就停止了。 方法是 count=0, count+=1 。 ...
  • Python while循环嵌套

    千次阅读 2021-01-13 22:37:53
    Python while循环嵌套教程Python while循环嵌套详解语法while cond1:# do somethingwhile cond2:while cond3:# do something说明这里,我们定义了三个 while 循环的嵌套,当然,我们可以嵌套任意多个的 while 循环。...
  • python的运算符和while循环

    千次阅读 2021-01-30 02:18:11
    一、运算符计算机可以进行的运算有很多种,不只是加减乘除,它和我们人脑一样,也可以做很多运算...打个比方来说吧,就像猜数字的游戏,要想让用户猜,就得一次次的猜吧,能猜一次就程序已经结束了,这样是不是感...
  • Python的While循环和for循环,python,while

    千次阅读 2021-01-14 17:41:32
    循环结构是编程的三大结构之。python和其他语言一样,提供了非常多的关键字来支持for循环和while循环。...满足,则退出循环1.2.while循环示例程序count = 0while (count<9):print(f'Now count is...
  • Java do while循环语句用法

    千次阅读 2021-02-27 19:06:57
    循环语句whileJava do while循环语句用法do-while循环,先执行一次,然后在判断,如果条件成立,在循环执行,如果成立,继续往下执行语法do {statement(s)} while (expression);布尔表达式在循环体的后面,所以...
  • C语言while循环和do while循环详解

    千次阅读 多人点赞 2020-02-22 11:31:23
    在C语言中,共有三大常用的程序结构: ...所谓循环(Loop),就是重复地执行同段代码,例如要计算 1+2+3+……+99+100 的值,就要重复进行99加法运算。 while循环 while循环的一般形式为: while(表达式)...
  • python-----运算符及while循环

    千次阅读 2020-12-03 05:55:57
    一、运算符计算机可以进行的运算有很多种,不只是加减乘除,它和我们人脑一样,也可以做很多运算...打个比方来说吧,就像猜数字的游戏,要想让用户猜,就得一次次的猜吧,能猜一次就程序已经结束了,这样是不是感...
  • Python中while循环简介(66)

    千次阅读 2021-01-14 17:28:25
    python大大的图图片发自简书App我的图图片发自简书App在复杂的程序中很多不同的事件都会导致程序停止运行,如果在循环中要检查这么多变量就会导致循环的编写变得复杂。...在while循环里,continu...
  • C语言:while与do while循环语句

    万次阅读 多人点赞 2019-05-05 23:55:29
    while 执行流程:先判断循环控制表达式 Exp_cntrl 的值,当该表达式的值为逻辑真(非 0)时,会一直执行循环体,直到表达式的值为逻辑假(0)才结束循环。 通常把循环控制表达式 ExP_cntrl 中含有的变量,称为...
  • sql while循环_SQL WHILE循环的简单示例

    万次阅读 2020-07-16 19:53:14
    sql while循环 SQL WHILE loop provides us with the advantage to execute the SQL statement(s) repeatedly until the specified condition result turn out to be false. SQL WHILE循环为我们提供了重复执行...
  • python中使用while循环的实例

    千次阅读 2020-11-23 23:56:40
    python中使用while循环的实例python中for循环用于针对集合中的每个元素的个代码块,而while循环能实现满足条件下的不断运行。使用while循环时,由于while只要满足条件就会执行代码,故必须指定结束条件,否则会...
  • 浅谈python中的while循环

    千次阅读 2020-11-24 00:11:53
    python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环;for循环的时候必须有一个可迭代的对象,才能循环,比如说 列表、字典、字符串等。前面我们已经学过 for ...
  • Python中while循环的基本用法

    万次阅读 多人点赞 2019-09-11 10:21:34
    while和for可以使程序重复执行某段代码(又称作循环体),区别是for循环用于针对集合中的每个元素都一个代码块,而while循环在表达式为True的情况下会不断地执行,直到指定条件满足为止。 今天我们起来...
  • 计算1s可以跑多少次while循环 import datetime startTick = datetime.datetime.now() i = 0 while 1: i = i + 1 endTick = datetime.datetime.now() if (endTick - startTick).seconds >= 1: break print(i) ...
  • C语言for循环和while循环的区别

    千次阅读 多人点赞 2020-04-16 11:09:16
    文章目录1、for循环介绍2、while循环介绍3、循环的选择4、版权声明 1、for循环介绍 for循环的一般形式为: for (语句1;表达式;语句2) { 语句块 } 1)for循环开始时,会先执行语句1,而且在整个循环过程中只执行...
  • C语言中的while循环语句

    千次阅读 2022-04-05 15:16:40
    日常生活中除了选择之外,还有很多循环做的事情,比如说三点...还是使用个代码来解释while循环的执行过程: #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int i = 1; while (i<=
  • 在Python中,循环类型主要有两种:第种:While循环,主要作用是:在给定的判断条件为True时执循环体,否则退出循环。第二种:for循环,重复执行语句。当然由第种和第二种各种嵌套的循环也非常常见。二、循...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 383,448
精华内容 153,379
关键字:

while循环可能一次都不运行