zoukankan      html  css  js  c++  java
  • shell-for步进循环

    1.基本语法

    for循环通常用于将一组语句执行已知的次数,基本语法是:

      for var in {start...end...step}
      do       
            str1
            str2
            ...
      done
    

    var是变量,{}整体上是一个列表,start代表列表的初始数值,end代表结束的数值,step代表步长,如{1..10..2}的意思是从1开始,到10结束,每两步输出一次,即1,3,5,7,9
    do和done之间的所有语句称为循环体,也就是在循环过程中,我们要真正执行的语句,具体执行多少次得看{}中的元素个数
    实例1,以步长为2,求100以内奇数相加的和
    #!/bin/bash
    sum=0
    for i in {1..100..2}
    do
    let "sum+=i" 等同于:sum=sum+i
    done
    echo "一百以内奇数相加的和为: $sum "
    输出结果:

    实例2:列出当前目录所有文件

      #!/bin/bash
      for file in *       *等同于ls * 即列出当前目录所有文件
      do
              echo "$file"   
      done
    

    输出结果:

    实例3.for循环还有一个重要的作用就是输出脚本的参数,例如输入参数1-9,给每个参数加1后输出

      #!/bin/bash
      echo "$*"
      for sum in $*
      do
              let "sum+=1"
              echo "$sum"
      done
    

    输出结果为:

    2.不带列表的for循环

    在特殊情况下for循环可以不带条件列表,由shell直接从命令行中获取列表
    实例4

      #!/bin/bash
      for sum
      do
            let "sum+=2"
            echo "加2后为:$sum"
      done
    

    结果为:

    这种写法每次都还在命令行交互,所以一般不用。

    3.C语言式for循环

    Linux因为是用C语言开发的,大部分人都或多或少的接触过C语言,所以bash也支持类C语言的for循环语句,基本语法为:

      for ((x;y;z))
      do
            statement1;
            statement2;
            .....
      done
    

    x一般表示变量初始值,y即决定循环的条件,返回值为0时,进行循环,非0时,退出循环;z表示改变变量的条件,例如自增自减....

    实例5:

      #!/bin/bash
      for (( i=1;i<=5;i++))
      do
              echo "这是第 $i 次循环"
      done
    

    i的值为1,i小于等于5,i每循环一次加一,即i循环五次,每次在前一次的基础上加1,也就是输出:1,1+1,2+1,3+1,4+1,(5+1=6大于5了,返回值就非0,不输出)如图

    条件缺省
    和C语言一样,在shell中也可以将for循环条件中的的任意部分省略掉,也可以全部省略,为了方便演示就用上面的代码了
    第一种,缺省初始变量

      #!/bin/bash
      for ((;i<=5;i++))
      do
              echo "这是第 $i 次循环"
      done
    

    输出结果为:

    也就是说,即使没加初始变量,shell把他当成空,还是会进行计算,步骤就变成了:空加1,1+1,2+1,3+1,4+1。循环了六遍

    第二种,缺省变量条件限制

      #!/bin/bash
      for ((;;i++))
      do
              echo "这是第 $i 次循环"
      done
    

    结果如下,停止时因为我ctrl+c结束了这个进程,因为没加结束条件,理论上他自己是永远不会停止循环的。(所以我们要加条件就是让脚本达到需求后就退出循环)

    第三种,缺省了变化条件,可想而知,也就是进行不变化的循环

    使用c循环要特别注意退出循环的条件,一不小心就会变成死循环。

    4.遍历数组

    shell为遍历数组提供一种特别的写法:

      for var in ${array[*]}
      do
            statement1
            statement2
      done
    

    var是变量,array是数组名,statement是达到目的后循环的条件。在遍历的过程中,for循环语句会将每个数组元素的值赋给变量var。
    举个例子:

      #!/bin/bash  
      array=("周一" "周二" "周三" "周四" "周五" "周六" "周日")
      for day in ${array[*]}
      do
              echo "$day"
      done
    

    循环结果为:

  • 相关阅读:
    基于角色的权限设计(一)
    js图片懒加载插件封装
    项目中必须知道有关css和html的常识
    设为主页代码及添加到收藏夹代码大全
    JS弹出层、弹窗效果+拖曳功能
    算数验证码
    js基础知识
    基于角色的权限设计(二)
    sqlserver数据类型char和nchar,varchar和nvarchar,text和ntext的用法以及区别?
    经典页面布局,任何分辨率下,全屏显示
  • 原文地址:https://www.cnblogs.com/hxlinux/p/12939966.html
Copyright © 2011-2022 走看看