• 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
  • 相关阅读:
    论文阅读_用模型模拟记忆过程
    09_spring注解方式管理bean
    分类(二):损失函数
    javascript中依次输出元素并不断循环实现echarts柱图动画效果
    USB 四种传输方式的通信API
    IDEA中给源码添加自己注释——private-notes插件安装使用
    Linux系统编程(三)——Linux下的进程
    M1 Mac创建虚拟环境遇到的问题
    面试官:你了解axios的原理吗?有看过它的源码吗?
    【Java基础】集合容器
  • 原文地址:https://blog.csdn.net/qq_37279783/article/details/125536209