zoukankan      html  css  js  c++  java
  • Shell for、while循环

    先顺带说下 if

    1. if  条件;then else fi

    如果else分支没有执行语句,可以不写。

    2. if 条件;then elif 条件;then else fi

    #!/bin/bash
    
    ## 定义变量,并赋值
    a=10
    b=20
    
    ## 判断a,b变量的关系
    if [ $a -eq $b ];then
       echo "a 等于 b"
    elif [ $a -gt $b ];then
       echo "a 大于 b"
    else
       echo "a 小于 b"
    fi

    结果:

    for 循环:

    语法1:

    for 变量 in 列表/数组     ##已空格 分隔符

    do

      command

    done

    语法2:

    for ((变量;条件;条件))

    do

      command

    done

    #!/bin/bash
    
    ## for 语法1,读取每个单词 ,注意不能使用引号(加上引号,就会默认是一个单词)
    for str in This is kimbo speaking
    do
        echo "The str is : ${str}"
    done
    
    ## for 语法2,注意使用两个小括号
    for (( i=1; i<=3; i++ ))
    do
    echo "The i is: $i"
    done
    
    ## for 语法3
    for j in `seq 1 3`
    do
    echo "The j is: $j"
    done
    
    ## for 语法4
    for k in {1..3}
    do
    echo "The k is: $k"
    done
    
    ## for 循环数组
    ##定义数组
    db_arr=(0 1 2 3 4 5 6 7 8 9 a b c d e f)
    for var_db in ${db_arr[@]}      ##循环取数据内容,默认从0开始
        do
            echo "var_db is ${var_db}"  ##打印变量
        done
    for 循环

    结果:

    while 循环:

    语法1:

    while [条件]

    do

      command

    done

    语法2:

    while (())

    do

      command

    done

    #!/bin/bash
    
    ## 定义变量
    a=1
    b=5
    
    ## while 语法1:
    while [ $a -le $b ]
    do
    echo "语法1:The a is :$a"
    a=`expr $a + 1`
    done
    
    ## while 语法2:
    while (( $a >= $b ))
    do
    echo "语法2:The a is :$a"
    a=`expr $a - 1`
    done
    View Code

    循环控制语句:

    break : 不执行当前循环体内break下面的语句,从当前循环退出

    continue : 不执行当前循环体内continue下面的语句,从循环开头 继续执行

    ###########while 逐行读取文件内容 

    方法1:

    cat ${file_name} | while read line
    do
    echo $line
    done

    方法2: 此方法可以获取循环内的变量,方法1不行。

    while read line
    do
    echo $line
    done <${file_name}

    小例子:用于日常补数据,非常实用

    #!/bin/bash
    
    ## 参数校验
    if [ $# -ne 2 ];then
    echo "Please Enter two parameter,try again."
    echo "example: 20170201 20170207"
    exit 1
    fi
    
    ## 定义目录
    dir=/home/test
    
    ## 定义变量,开始日期、结束日期
    s_date=`date -d "$1" +%Y%m%d`
    e_date=`date -d "$2" +%Y%m%d`
    
    ## 打印变量
    echo "循环开始日期 is ${s_date}--->"
    echo "循环结束日期 is ${e_date}--->"
    
    ## while 循环
    while (( ${s_date} <= ${e_date} ))
    do
    
    echo "当前运行日期:${s_date}"
    ## 运行补数脚本
    ##sh ${dir}/kimbo_test.sh ${s_date} >>$dir/run.log
    
    ## 运行日期加1天
    s_date=`date -d "+1 day ${s_date}" +%Y%m%d`
    
    done
    View Code

     结果:

  • 相关阅读:
    JavaScript基础数组的字面声名法(010)
    @Scheduled(cron="") spring定时任务时间设置
    servlet示例
    javaweb jsp页面上传excel文件
    js闭包详解
    eclipse 使用mvn模块化开发
    linux 安装mysqlServer
    linux安装jdk
    深入学习微框架Spring-boot
    mvn打包发布
  • 原文地址:https://www.cnblogs.com/kimbo/p/6363035.html
Copyright © 2011-2022 走看看