• Shell脚本-for循环和for int循环


    for 循环

    for((exp1; exp2; exp3))
    do
        statements
    done
    
    • 1
    • 2
    • 3
    • 4

    几点说明:

    • exp1、exp2、exp3 是三个表达式,其中 exp2 是判断条件,for 循环根据 exp2 的结果来决定是否继续下一次循环;
    • statements 是循环体语句,可以有一条,也可以有多条;
    • dodone 是 Shell 中的关键字。

    代码:计算从 1 加到 100 的和。

    #!/bin/bash
    sum=0
    for ((i=1; i<=100; i++))
    do
        ((sum += i))
    done
    echo "The sum is: $sum"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出:

    The sum is: 5050
    
    • 1

    for in 循环

    for variable in value_list
    do
        statements
    done
    
    • 1
    • 2
    • 3
    • 4

    variable 表示变量,value_list 表示取值列表,in 是 Shell 中的关键字。

    每次循环都会从 value_list 中取出一个值赋给变量 variable,然后进入循环体(do 和 done 之间的部分),执行循环体中的 statements。直到取完 value_list 中的所有值,循环就结束了。

    代码1

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

    输出:

    1
    2
    3
    4
    5
    6
    The sum is 21
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    对 value_list 的说明

    1) 直接给出具体的值

    可以在 in 关键字后面直接给出具体的值,多个值之间以空格分隔,比如1 2 3 4 5、“abc” “390” "tom"等。

    代码:
    #!/bin/bash
    for str in "aaa" "bbb" "ccc" "ddd"
    do
        echo $str
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出:

    aaa
    bbb
    ccc
    ddd
    
    • 1
    • 2
    • 3
    • 4

    2) 给出一个取值范围

    给出一个取值范围的具体格式为:

    {start..end}
    
    • 1

    start 表示起始值,end 表示终止值;注意中间用两个点号相连,而不是三个点号。根据笔者的实测,这种形式只支持数字和字母。

    代码1:计算从 1 加到 100 的和
    #!/bin/bash
    sum=0
    for n in {1..100}
    do
        ((sum+=n))
    done
    echo $sum
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出:

    5050
    
    • 1
    代码2:输出从 A 到 z 之间的所有字符:
    #!/bin/bash
    for c in {A..z}
    do
        printf "%c" $c
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出:

    ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz
    
    • 1

    可以发现,Shell 是根据 ASCII 码表来输出的。

    3) 使用命令的执行结果

    代码1:计算从 1 到 100 之间所有偶数的和:
    #!/bin/bash
    sum=0
    for n in $(seq 2 2 100)
    do
        ((sum+=n))
    done
    echo $sum
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出:

    2550
    
    • 1

    seq 是一个 Linux 命令,用来产生某个范围内的整数,并且可以设置步长。
    seq 2 2 100表示从 2 开始,每次增加 2,到 100 结束。

    代码2:列出当前目录下的所有 Shell 脚本文件:
    #!/bin/bash
    for filename in $(ls *.sh)
    do
        echo $filename
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出:

    demo.sh
    test.sh
    abc.sh
    
    • 1
    • 2
    • 3

    4) 使用 Shell 通配符

    Shell 通配符可以认为是一种精简化的正则表达式,通常用来匹配目录或者文件,而不是文本

    代码:显示当前目录下的所有脚本文件
    #!/bin/bash
    for filename in *.sh
    do
        echo $filename
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出:

    demo.sh
    test.sh
    abc.sh
    
    • 1
    • 2
    • 3
  • 相关阅读:
    verilog中,何时用reg和wire
    Oracle行转列(pivot)和Oracle列转行(unpivot)
    Spring 中不得不了解的姿势
    环境配置04:Pytorch下载安装
    【动手深度学习-笔记】R-CNN系列
    图文手把手教程--ESP32 MQTT连接阿里云生活物联网平台
    Python爬虫入门篇学习记录
    微波功率计/频率计-87234系列USB峰值/平均功率计
    matlab spm批量配准
    【Java SE】继承
  • 原文地址:https://blog.csdn.net/qq_37279783/article/details/125536209