• shell脚本系列:两种风格的for循环


    C语言风格

    格式

    for((exp1; exp2; exp3))
    do
        statements
    done
    

    示例

    #!/bin/bash
    
    sum=0
    
    for ((i=1; i<=100; i++))
    do
        ((sum += i))
    done
    
    echo "The sum is: $sum"
    

    修改“从 1 加到 100 的和”的代码,省略 exp1:

    #!/bin/bash
    
    sum=0
    i=1
    
    for ((; i<=100; i++))
    do
        ((sum += i))
    done
    
    echo "The sum is: $sum"
    

    省略 exp2,就没有了判断条件,如果不作其他处理就会成为死循环,我们可以在循环体内部使用 break 关键字强制结束循环:

    #!/bin/bash
    
    sum=0
    
    for ((i=1; ; i++))
    do
        if(( i>100 )); then
            break
        fi
        ((sum += i))
    done
    
    echo "The sum is: $sum"
    

    省略了 exp3,就不会修改 exp2 中的变量,这时可在循环体中加入修改变量的语句。例如:

    #!/bin/bash
    
    sum=0
    
    for ((i=1; i<=100; ))
    do
        ((sum += i))
        ((i++))
    done
    
    echo "The sum is: $sum"
    

    最后给大家看一个更加极端的例子,同时省略三个表达式:

    #!/bin/bash
    
    sum=0
    i=0
    
    for (( ; ; ))
    do
         if(( i>100 )); then
            break
        fi
        ((sum += i))
        ((i++))
    done
    
    echo "The sum is: $sum"
    

    Python风格

    格式

    for variable in value_list
    do
        statements
    done
    

    示例

    #!/bin/bash
    
    sum=0
    
    for n in 1 2 3 4 5 6
    do
        echo $n
         ((sum+=n))
    done
    
    echo "The sum is "$sum
    

    直接给出具体的值:

    #!/bin/bash
    
    for str in "杰克" "汤姆" "爱丽丝" "亨瑞"
    do
        echo $str
    done
    

    给出一个取值范围:

    #!/bin/bash
    
    sum=0
    
    for n in {1..100}
    do
        ((sum+=n))
    done
    
    echo $sum
    
    #!/bin/bash
    
    for c in {A..z}
    do
        printf "%c" $c
    done
    

    使用命令的执行结果:

    #!/bin/bash
    
    sum=0
    
    for n in $(seq 2 2 100)
    do
        ((sum+=n))
    done
    
    echo $sum
    
    #!/bin/bash
    
    for filename in $(ls *.sh)
    do
        echo $filename
    done
    

    使用 Shell 通配符:

    #!/bin/bash
    
    for filename in *.sh
    do
        echo $filename
    done
    

    使用特殊变量:

    #!/bin/bash
    
    function func() {
        for str in $@
        do
            echo $str
        done
    }
    
    func 小刘 小张 小宋
    
  • 相关阅读:
    UML序列图
    接口初探
    Discuz初探
    Vim指令学习
    UCenter Home代码研读之space.php
    建站须知
    linux指令之文件的创建、查询、修改
    InitPHP初探
    php环境搭建
    Zend Framework学习之Zend_Db 数据库操作
  • 原文地址:https://www.cnblogs.com/iuskye/p/shell-for.html
Copyright © 2020-2023  润新知