zoukankan      html  css  js  c++  java
  • shell脚本中的循环(for循环,while循环)及break、continue的用法示例

    Shell脚本中也算是一门简易的编程语言了,当然循环是不能缺少的。常用到的循环有for循环和while循环。下面就分别介绍一下两种循环的结构。

    【for循环】:

    Shell脚本中的for循环示例:

    #! /bin/bash
    ## author:Xiong Xuehao
    ## Use for in this script.
    for i in `seq 1 5`; do
      echo $i
    done

    脚本中的seq 1 5 表示从1到5的一个序列。你可以直接运行这个命令试下。脚本执行结果为:

      通过这个脚本就可以看到for循环的基本结构:

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

    command

    done

     循环的条件那一部分也可以写成这样的形式,中间用空格隔开即可。你也可以试试,for i in `ls`; do echo $i; done for i in `cat test.txt`; do echo $i; done

    【while循环】:

    再来看看这个while循环,基本格式为:

    while 条件; do

    command

    done

    #! /bin/bash
    ## author:Xiong Xuehao
    ## Use while in this script.
    
    a=10
    while [ $a -ge 1 ];do
      echo $a
      a=$[$a-1]
    done

    脚本的执行结果为:

     另外你可以把循环条件忽略掉,笔者常常这样写监控脚本。

    while :; do

    command

    done

    示例:

    #! /bin/bash
    ## author:Xiong Xuehao
    ## Monitoring alarm.
    
    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 xxxxxxxxxx@qq.com "load high" "$load"
        fi
        sleep 30
    done

    Shell脚本(for循环,while循环里面使用 break跳出循环,continue结束本次循环)

         在看脚本之前,我们需要知道continue和break的意思:
    continue是继续的意思,也就是当运行结果不满足条件时,在从头循环一遍。(通俗理解是:跳过本次循环剩余部分,直接开始下一轮循环)
    break是跳出循环的意思。(通俗理解是退出整个循环)。

    注意break、continue仅在`for', `while', 或者`until' 循环中有意义。

          下面先来看for循环中使用break的例子:有5个人参加抢答游戏,但是只有3个名额剩余的都淘汰。从1,2,3,4,5报数,数到3时结束。

    #! /bin/bash
    ## author:Xiong Xuehao
    ## 循环语句里面的continue和break.
    
    for i in `seq 1 5`; do
      echo -n "$i"
      if [ $i -ge 3 ]; then
        echo "名额满了,剩下的都离开吧"
        break
      else
        echo "继续"
      fi
    done

    如图:

      

          下面来看for循环中使用continue的例子:有5个人参加抢答游戏,前两名2个名额,迟到的都罚站。从1,2,3,4,5报数,从第3名开始及以后的都罚站。

    #! /bin/bash
    ## author:Xiong Xuehao
    ## 循环语句里面的continue和break.
    
    for i in `seq 1 5`; do
      echo -n "$i"
      if [ $i -ge 3 ]; then
        echo "迟到了,罚站"
        continue
      else
        echo "继续"
      fi
    done

    如图:

     

      上面两个例子注意看区别哦。

    再看一个for循环的脚本,将break个continue结合起来使用的例子:

    要求输入一个数字,如果输入内容不是数字返回一个字符串提醒,如果输入为空也返回一个字符串提醒,如果是输入数字则将该数字显示出来。

    #! /bin/bash
    ## author:Xiong Xuehao
    ## 循环语句里面的continue和break.
    
    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

    执行如图:

     【完】

  • 相关阅读:
    索尼MT27i Android2.3.7 线刷Android4.04
    如何在三分钟内要到陌生女孩的电话
    闲情逸致小说嫉妒
    LINQ查询返回DataTable类型
    30个Oracle语句优化规则详解(1)
    .net session超时设置 sessionState的相关属性
    Socket请求和Http请求的各自特点、区别及适用场景
    在Oracle触发器中调用webService 或者java程序
    vs2010中使用log4net的方法
    Oracle 记录操作时长
  • 原文地址:https://www.cnblogs.com/xiongzaiqiren/p/15104535.html
Copyright © 2011-2022 走看看