精华内容
下载资源
问答
  • while循环 语法 while 条件; do … ; done 脚本案例一: 需求:每隔半分钟检查系统负载,当系统负载大于10的时候就发一封邮件告警。最小单元是任务计划 cron 脚本示例: [root@garytao-01 aming]# vi while1...

    while循环

    • 语法 while 条件; do … ; done

    脚本案例一:

    需求:每隔半分钟检查系统负载,当系统负载大于10的时候就发一封邮件告警。最小单元是任务计划 cron 脚本示例:

    [root@garytao-01 aming]# vi while1.sh
    [root@garytao-01 aming]# cat while1.sh 
    #!/bin/bash
    while true
    # 冒号 : 表示死循环的意思,或者1,或者 true都是死循环
    do
        load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`
        if [ $load -gt 10 ]
        then
            /usr/local/sbin/mail.py xxx@qq.com "load high" "$load"
        fi
        sleep 30
    #休眠30秒,因为检查系统负载,不需要一直去检查,过一会再看
    done
    
    [root@garytao-01 aming]# sh -x while1.sh 
    + true
    ++ w
    ++ head -1
    ++ awk -F 'load average: ' '{print $2}'
    ++ cut -d. -f1
    + load=0
    + '[' 0 -gt 10 ']'
    + sleep 30
    + true
    ++ w
    ++ head -1
    ++ awk -F 'load average: ' '{print $2}'
    ++ cut -d. -f1
    + load=0
    + '[' 0 -gt 10 ']'
    + sleep 30
    ^C
    [root@garytao-01 aming]# 
    
    #若想这种脚本不意外的终止,可以打开screen,在screen跑脚本
    

    知识点:

    • w #查看系统负载 ;
    • uptime #可以直接显示 w 系统负载的第一行,就可以省去 head -1
    • head -1 #取第一行
    • awk -F 'load average: ' '{print $2}' # 以'load average: '分隔,输出第二段
    • cut -d . -f1 # 以 . 分隔 取第一段

    脚本案例二:

    需求:在循环过程过,需要用户去输入一个数字;输入的不是数字,是数字,输入为空;回应相应的结果。

    [root@garytao-01 shell]# vim while2.sh
    [root@garytao-01 shell]# cat while2.sh 
    #!/bin/bash
    while :
    do
        read -p "Please input a number: " n
        if [ -z "$n" ]  #如果变量输入的为空
        then
            echo "you need input sth."
    #你需要输入东西
            continue
    #continue 重新回到循环,变量为空时,再次重复执行任务
        fi
        n1=`echo $n|sed 's/[0-9]//g'`
    #判断n是否为纯数字
        if [ ! -z "$n1" ]
        then
            echo "you just only input numbers."
    #你只能输入一个纯数字,如果不能纯数字,继续执行任务,如果是结束,退出循环
            continue
        fi
        break
    #break  退出循环
    done
    echo $n
    
    [root@garytao-01 shell]# sh -x while2.sh 
    + :
    + read -p 'Please input a number: ' n
    Please input a number: 
    + '[' -z '' ']'
    + echo 'you need input sth.'
    you need input sth.
    + continue
    + :
    + read -p 'Please input a number: ' n
    Please input a number: 23
    + '[' -z 23 ']'
    ++ echo 23
    ++ sed 's/[0-9]//g'
    + n1=
    + '[' '!' -z '' ']'
    + break
    + echo 23
    23
    

    break跳出循环

    break 常用于循环语句中

    跳出整个循环语句,直接结束所有循环

    • 把整个循环退出
    [root@garytao-01 aming]# vi break1.sh 
    [root@garytao-01 aming]# cat break1.sh 
    #!/bin/bash
    for i in `seq 1 5`
    do
        echo $i
    #输出i的值
        if [ $i -eq 3 ]
    #比较数字,用-eq ;若是比较的是字符串,那需要用 ==
        then
            break
        fi
        echo $i
    done
    echo aaaaa
    
    [root@garytao-01 aming]# sh break1.sh 
    1
    1
    2
    2
    3
    aaaaa
    [root@garytao-01 aming]# sh -x break1.sh 
    ++ seq 1 5
    + for i in '`seq 1 5`'
    + echo 1
    1
    + '[' 1 -eq 3 ']'
    + echo 1
    1
    + for i in '`seq 1 5`'
    + echo 2
    2
    + '[' 2 -eq 3 ']'
    + echo 2
    2
    + for i in '`seq 1 5`'
    + echo 3
    3
    + '[' 3 -eq 3 ']'
    + break
    + echo aaaaa
    aaaaa
    [root@garytao-01 aming]# 
    
    

    continue结束本次循环

    • 忽略continue之下的代码,直接进行下一次循环
    [root@garytao-01 aming]# vi continue.sh
    [root@garytao-01 aming]# cat continue.sh 
    #!/bin/bash
    for i in `seq 1 5`
    do
        echo $i
        if [ $i -eq 3 ]
        then
            continue
        fi
        echo $i
    done
    echo aaaaa
    
    [root@garytao-01 aming]# sh continue.sh 
    1
    1
    2
    2
    3
    4
    4
    5
    5
    aaaaa
    
    [root@garytao-01 aming]# sh -x continue.sh 
    ++ seq 1 5
    + for i in '`seq 1 5`'
    + echo 1
    1
    + '[' 1 -eq 3 ']'
    + echo 1
    1
    + for i in '`seq 1 5`'
    + echo 2
    2
    + '[' 2 -eq 3 ']'
    + echo 2
    2
    + for i in '`seq 1 5`'
    + echo 3
    3
    + '[' 3 -eq 3 ']'
    + continue
    + for i in '`seq 1 5`'
    + echo 4
    4
    + '[' 4 -eq 3 ']'
    + echo 4
    4
    + for i in '`seq 1 5`'
    + echo 5
    5
    + '[' 5 -eq 3 ']'
    + echo 5
    5
    + echo aaaaa
    aaaaa
    [root@garytao-01 aming]# 
    
    

    exit退出整个脚本

    • 直接退出整个脚本,脚本示例

    可以定义退出的数值,可以用于确定脚本运行到什么地方的时候,结束

    [root@garytao-01 aming]# vi exit.sh
    [root@garytao-01 aming]# cat exit.sh 
    #!/bin/bash
    for i in `seq 1 5`
    do
      echo $i
      if [ $i -eq 3 ]
      then
          exit
      fi
      echo $i
    done
    echo aaaaa
    
    [root@garytao-01 aming]# sh exit.sh 
    1
    1
    2
    2
    3
    [root@garytao-01 aming]# sh -x exit.sh 
    ++ seq 1 5
    + for i in '`seq 1 5`'
    + echo 1
    1
    + '[' 1 -eq 3 ']'
    + echo 1
    1
    + for i in '`seq 1 5`'
    + echo 2
    2
    + '[' 2 -eq 3 ']'
    + echo 2
    2
    + for i in '`seq 1 5`'
    + echo 3
    3
    + '[' 3 -eq 3 ']'
    + exit
     
    

    转载于:https://my.oschina.net/u/3708153/blog/2993296

    展开全文
  • 跳出while循环的三种方法

    千次阅读 2020-07-29 22:49:01
    跳出while循环的三种方法(以Python代码为例) 文章目录跳出while循环的三种方法(以Python代码为例)方法1: break语句方法2: 标志位方法3: 判断不结束 在《Python编程从入门到实践》书中有这么一道习题:比萨配料: ...

    跳出while循环的三种方法(以Python代码为例)


    在《Python编程从入门到实践》书中有这么一道习题: 比萨配料: 编写一个程序,提示用户输入一系列的比萨配料,并在用户输入’quit’时结束循环,说我们会在比萨中添加这种配料。

    这道题主要考察while循环。

    方法1: break语句

    # 方法1
    pizza = []
    while True:
        message = input("你要加入什么佐料?")
        if message == 'quit':
            break
    
        pizza.append(message)
        print("已加入" + message)
    
    print(pizza)
    

    方法2: 标志位

    # 方法2
    active = True
    pizza = []
    while active:
        message = input("你要加入什么佐料?")
        if message == 'quit':
            active = False
        else:
            pizza.append(message)
            print("已加入" + message)
    
    print(pizza)
    

    方法3: 判断不结束

    # 方法3
    message = ""
    pizza = []
    while message != 'quit':
        message = input("你要加入什么佐料?")
        if message != 'quit':
            pizza.append(message)
            print("已加入" + message)
    
    print(pizza)
    

    我在这里简单的写一下,这算是基本原理吧。实际应用可能更加复杂。但要有这些思路和小技巧。希望能对你有些启发。

    一个简单的运行示例:

    while循环

    展开全文
  • while循环 SHELL加法运算及I++ for循环 for:https://www.cnblogs.com/EasonJim/p/8315939.html for i in {1..10}#10 这个替换成${NUM} 不起作用 语法:for 变量名 in 条件 ; do done; 案例一: 计算1-100...

    目录

    for循环

    while循环

    SHELL加法运算及I++

    for循环

    for:https://www.cnblogs.com/EasonJim/p/8315939.html

    for i in {1..10}#10 这个替换成${NUM} 不起作用

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

    案例一:

    计算1-100所有数字的和。

    脚本:

    #!/bin/bash

    sum=0

    for i in `seq 1 100`

    do

        sum=$[$sum+$i]

    done

        echo $sum

    结果:

    [root@congji ~]# sh 1-100.sh 

    5050

    案例二:

    列出/etc/sysconfig下所有子目录,并且使用ls -d命令查看。

    脚本:

    #/bin/bash

    cd /etc/sysconfig

    for i in `ls /etc/sysconfig`

    do

        if [ -d $i ]

           then

           ls -d $i

        fi

    done

    结果:

    [root@congji ~]# sh syscon.sh

    cbq

    console

    modules

    network-scripts

    for循环有一个值得注意的地方:

    案例3:

    我们创建几个文件,用for循环来ls他们。

    [root@congji shili]# ll 

    总用量 0

    -rw-r--r-- 1 root root 0 1月  16 21:16 1.txt

    -rw-r--r-- 1 root root 0 1月  16 21:16 2.txt

    -rw-r--r-- 1 root root 0 1月  16 21:17 3 4.txt

    [root@congji shili]# for i in `ls ./`;do echo $i ;done

    1.txt

    2.txt

    3

    4.txt

    所以写脚本的时候要注意

    while循环

    语法 while条件;do...;done

    案例1:写一个脚本来监控系统负载,当系统负载大于10时,发邮箱警告。

    脚本:

    #/bin/bash

    while :

    do 

        load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`

        if [ $load -gt 10 ]

        then

            /usr/local/sbin/mail.py xxx@qq.com "load high" "$load"

        fi

        sleep 30

    done

    运行结果:

    [root@congji shell]# sh -x while.sh 

    + :

    ++ w

    ++ head -1

    ++ awk -F 'load average: ' '{print $2}'

    ++ cut -d. -f1

    + load=0

    + '[' 0 -gt 10 ']'

    + sleep 30

    案例二:

    类似于之前写过的for循环的脚本,输入一个数字,如果不是数字返回一个字符串,如果输入为空返回一个字符串,如果是数字返回。

    在看脚本之前,我们需要知道continue和break的意思。

    continue是继续的意思,也就是当运行结果不满足条件时,在从头循环一遍。

    break是跳出循环的意思。

    脚本:

    #/bin/bash

    while :

    do

        read -p "please input a number: " n

        if [ -z "$n" ]

        then

           echo "你需要输入东西."

           continue

        fi

        n1=`echo $n|sed 's/[0-9]//g'`

        if [ ! -z "$n1" ]

        then

           echo "你只能输入一个纯数字."

           continue

        fi

        break

    done

    echo $n

    运行结果:

    [root@congji shell]# sh while2.sh 

    please input a number: 1d

    你只能输入一个纯数字.

    please input a number: 

    你需要输入东西.

    please input a number: 1

    1

    break

    break在while循环中,我们提到了,这里来写一个脚本,加深印象

    如果输入的数字小于等于3,则返回数字,如果输入的数字大于3,则返回aaaa

    脚本:

    #/bin/bash

    read -p "please input a number: " i

    if [ $i -lt 3 ]

        then

        echo $i

           break

    else

        echo aaaa

    fi

    运行结果:

    [root@congji shell]# sh break.sh 

    please input a number: 1

    1

    [root@congji shell]# sh break.sh 

    please input a number: 5

    aaaa

    continue结束本次循环,而break是跳出循环,要分清楚

    [root@congji shell]# cat continue.sh 

    #/bin/bash

    for i in `seq 1 5`

    do 

        echo $i

    if [ $i -eq 3 ]

            then

               continue

            fi

            echo $i

    done

    [root@congji shell]# sh continue.sh 

    [root@congji shell]# cat break.sh 

    #/bin/bash

    for i in `seq 1 5`

    do 

         echo $i

    if [ $i == 3 ]

        then

           break

    fi

        echo $i

    done

    [root@congji shell]# sh break.sh 

    对比两个脚本我们可以发现,break相当于跳出循环,结束。而continue相当于结束本次循环,开始新的循环,

    #!/bin/bash
    min=1
    while true
    do
        echo $min
        min=`expr $min + 2`
    done
    ~       

    转自;https://blog.51cto.com/13407306/2070389

    SHELL加法运算及I++

     

    shell中不支持像普通c语言中的i++操作,默认都是字符串操作,但是通过以下几种方式可以进行变量的自增加

    1、linux 用let 表示算术表达式 如下:

         i=0 

         let i +=1  或者 let 'i+=1'

    2、let也可以用 (())替代,这种用法常见于for循环中

          ((i++))

    for 循环中用法:

    ((for i=0;i<2;i++))

    do

    ..

    done

    3、linux 中也可以用expr 

          i=`expr $i + 1`;

     4、还可以用如下模式  
           i=$[$i+1];
           i=$(( $i + 1 ))

    ---------------------

    注意 例  1+2得不到想要的结果,只会输出1+2这个字符串

    展开全文
  • for循环 for循环的基本结构: for 变量名 in 循环的条件; do command done 编写for循环脚本:计算1到100所有数字和: #!/bin/bash sum=0 for i in `seq 1 100` do echo "$sum + $i" sum=$[$sum+$i...

    for循环

    for循环的基本结构:

    for 变量名 in 循环的条件; do
    command
    done

    编写for循环脚本:计算1到100所有数字和:

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

    文件列表循环
    ls所有的目录

    #!/bin/bash
    cd /etc/
    #如果不进入目录,就不能ls
    for a in `ls /etc/`
    do
        if [ -d $a ]
        then
            echo $a
            ls $a
        fi
    done
    

    for循环的时候回以空格或回车作为分割符

    while循环

    语法: while 条件; do command ; done.

    每隔30秒检查系统负载,当负载达到10,发一份邮件

    #!/bin/bash
    while true
    do
        load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`
    
        if [ $load -gt 10 ]
        then
             /usr/local/sbin/mail.py zhuneianxiang@163.com "load high" "$load"
             #发邮件
        fi
        sleep 30
        #休息三十秒
    done
    

    让用户不断的输入纯数字,才停止换算:

    #!/bin/bash
    while :
    #while死循环
    do
    read -p "Please input a number: " n
    #用户交互,输入一个数
        if [ -z "$n" ]
        #判断n是否为空,空结束本次循环
        then
        echo "you need input sth."
        continue
        fi
    n1=`echo $n|sed 's/[0-9]//g'`
    #将n中非数字的部分赋值给n1
        if [ ! -z "$n1" ]
        #判断n1是否为空,不为空,说明不全是数字,continue结束本次循环,为空,break跳出循环
        then
        echo "you just only input numbers."
        continue
        fi
        break
    done
    echo $n
    #打印出输入的数
    

    break跳出循环

    break跳出循环:
    跳出整个循环,一执行break,后边的循环就不做了。

    #!/bin/bash
    for i in `seq 1 5`
    do
    echo $i
    if [ $i -eq 3 ]
    then
    break
    fi
    echo $i
    done
    echo aaaaa
    

    continue结束本次循环

    continue结束本次循环:
    执行到continue,这次循环就不做了,做下一次循环

    #!/bin/bash
    for i in `seq 1 5`
    do
        echo $i
        if [ $i -eq 3 ]
        then
        continue
        fi
        echo $i
    done
    echo aaaaa
    

    exit退出整个脚本

    exit直接退出整个脚本:

    #!/bin/bash
    for i in `seq 1 5`
    do
    echo $i
    if [ $i -eq 3 ]
    then
    exit
    fi
    echo $i
    done
    echo aaaaa
    
    展开全文
  • #双循环 for i in range(0,10,1):#循环十次 print("打印第%s次"%(i)) for j in range ( 10 ): print ( "%s" % (j) ) #输出结果 打印第0次 0 1 2 3 4 5 6 7 8 9 打印第1次 0 1 2 3 4 5 6 7 8 9 打印第2次 0 1 2 3...
  • for循环 语法:for 变量名 in 条件 ; do done; 案例一: 计算1-100所有数字的和。 脚本: #!/bin/bash sum=0 for i in `seq 1 100` do sum=$[$sum+$i] done echo $sum 结果: [root@congji ~]# sh 1-100.sh ...
  • return可以跳出for循环和while循环

    千次阅读 2020-03-28 17:54:03
    for循环 def A(e): L=[1,5] for i in range(e): L.append(L[-1]+L[-2]) print(L) return (L[-1]) print(A(7)) 运行结果: ...由此可见return可以中断for循环 while循环 def A(e): L=[1,5] while...
  • 一、for循环•语法:for 变量名 in 条件; do …; done示例1.计算1到100所有数字的和#!/bin/bashsum=0for i in `seq 1 100`do sum=$[$sum+$i]doneecho $sum2.列出etc目录下的所有目录#!/bin/bashcd /etc/for a in `...
  • while循环 需求一:每隔30秒检查系统负载,当系统负载大于10的时候就发一封邮件告警 冒号 : 表示死循环的意思 需求二:用户输入一个数字,检测是数字则打印出来 break跳出循环 ...
  • for循环 语法:for 变量名 in 条件; do …; done 案例1 1+2+3..+100的和 sum 第一次作为变量的时候,是0;当进入for循环里面的时候,每运算一次,sum变量就会改变一次,直至$i 结束;最后输出结果 $sum 在做...
  • vba如何退出while循环

    万次阅读 2013-11-22 08:59:54
    如:循环100次  While i  i = i + 1    If i = 100 Then GoTo 100    Wend 100: '退出while msgbox "已经退出while 了!"   方式2、 i = 1 Do While i  If i = 100 Then Exit Do  i =
  • for循环 1、求1加到100的数字的合是多少 sum=0 for i in `seq 1 100`;do sum=$[sum+$i];echo "$sum";done 2、循环目录列表 [root@centos7 shell]# vi for.sh #!/bin/bash dir=/usr/local/sbin/ for a inls $dir do.....
  • 通过while循环实现循环监控的目的。 注:若想这种脚本不意外的终止,可以打开screen,在screen跑脚本 循环输入数据,直至正确 与单纯的逻辑判断脚本不同的是,需要用户输入一个数字;如果输入的不是数字...
  • for循环,while循环,break跳出循环

    千次阅读 2018-01-23 01:57:14
    for循环,while循环,break跳出循环
  • ASP跳出本次循环进入下一循环!的方法发布时间:2017-09-07 22:06来源:互联网当前栏目:web技术类看下面的Java代码,目的是为了当i是3的时候,就不做输出,直接跳到下一个循环。int i = 0;while (i < 5) ...{i++;...
  • 刚刚我们学习了使用break...而continue语句用于跳出当前循环,然后继续进行下一轮循环,continue语句同样应用于while循环和for循环中。在for循环中使用continue在下图中,不使用continue语句,最终运行结果应该是1到...
  • 一、for循环  语法:for 变量名 in 条件; do …; done  案例1:  #!/bin/bash sum=0 for i in `seq 1 100` do  sum=$[$sum+$i]  echo $i done echo $sum 案例2:文件列表循环    #!...
  • for循环 while循环 break跳出循环 continue结束本次循环 exit退出脚本 转载于:https://blog.51cto.com/13515599/2106958
  • 使用continue跳出本次循环

    千次阅读 2020-01-03 09:48:15
    刚刚我们学习了使用break跳出...而continue语句用于跳出当前循环,然后继续进行下一轮循环,continue语句同样应用于while循环和for循环中。 在for循环中使用continue 在下图中,不使用continue语句,最终运行结果应...
  • 04 C语言基础-循环语句while/do…while/for while /************************** 1+2+...+99+100 **************************/ #include "stdio.h" int main() { int a=1,sum=0; while(a<=100) { sum=...
  • day04 this与自定义属性 1.回顾 document.write和innerHTML的区别? 共同点:都可以识别标签,都可以改变body标签的内容 区别: ...更新循环变量){ 循环体 } 2.循环 2.1 for循环嵌套 图形 /
  • (2)continue 跳出本次循环 for (int i = 0; i ; i++) { if (i == 3) { continue; } Console.WriteLine(i); } 从输出的的结果可以看出,程序遇到continue就不会执行本次循环中的其他语句,而是跳到下一次循环 ...
  • for循环语法:for 变量名 in 条件; do …; done for循环会以空格作为分隔符 案例1 #!/bin/bash sum=0 for i in `seq 1 100` do sum=$[$sum+$i] echo $i done echo $sum 文件列表循环 #!/bin/bash cd /etc/ for a ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,269
精华内容 10,507
关键字:

跳出本次while循环