• 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
  • 相关阅读:
    Android 学习之多状态布局的一种实现方案
    neo4j的Cypher的语法记录
    Python 1-04 循环语句
    9月1日目标检测学习笔记——通用物体检测
    基于数组的SCL算法实现S7-1200_1500多通道模拟量批量处理的方法
    洛谷刷题C语言:Bold、饱食、公平の意、DOM、
    为什么在bootstrapTable中的select1标签与select2标签联动后,无法执行select2的change监听器
    Tomcat9的安装以及配置环境
    基础算法练习200题14、阶乘
    多年的心愿
  • 原文地址:https://blog.csdn.net/qq_37279783/article/details/125536209