• Shell编程循环语句(for、while、until)


    目录

    一、for 循环

    1.用法和特点

    2.执行指定次数

    3.遍历和迭代

    (1)遍历

    (2)迭代 

    4.操作实例

    二、 while 循环

    1.用法和特点

    2.操作实例

    三、until 循环

    1.用法和特点

    2.操作实例 


    一、for 循环

    1.用法和特点

    读取不同的变量值,用来逐个执行同一组命令

    for循环经常使用在已经知道要进行多少次循环的场景

    for 变量 in 取值列表    -- 默认取值分割符(空格、制表符、换行符)

    do 或 {

        命令序列              

    done 或 }

    2.执行指定次数

    取值列表(指定取值)

    for value in 1 2 3 4 5    //每个取值用空格分开

    do

        命令序列              

    done

    1. [root@localhost1 ~]#vim test4.sh
    2. #!/bin/bash
    3. for i in 1 2 3 4
    4. do
    5. echo $i
    6. done
    7. [root@localhost1 ~]#bash test4.sh
    8. 1
    9. 2
    10. 3
    11. 4

    3.遍历和迭代

    迭代和遍历实现的方式不同,但都可以实现循环执行指定范围的所有值

    (1)遍历

    for value in {1.. 10}

    do

        命令序列              

    done

    for value in $(seq 1 10)

    do

        命令序列              

    done

    1. [root@localhost1 ~]#vim test5.sh
    2. #!/bin/bash
    3. for i in {1..4} -- 方式1
    4. do
    5. echo $i
    6. done
    7. echo "-------------"
    8. for i in $(seq 1 4) -- 方式2
    9. do
    10. echo $i
    11. done
    12. [root@localhost1 ~]#bash test5.sh
    13. 1
    14. 2
    15. 3
    16. 4
    17. ------------- 遍历执行效果相同
    18. 1
    19. 2
    20. 3
    21. 4

    指定步长(两种方法位置不一样,用n表示) 

    for value in {1.. 10..n}

    do

        命令序列              

    done

    for value in $(seq 1 n 10)

    do

        命令序列              

    done

    1. //指定步长,如步长为2可以实现奇偶数
    2. [root@localhost1 ~]#vim test6.sh
    3. #!/bin/bash
    4. for i in {1..10..2} --起始为奇数
    5. do
    6. echo $i
    7. done
    8. echo "-------------"
    9. for i in $(seq 2 2 10) --起始为偶数
    10. do
    11. echo $i
    12. done
    13. [root@localhost1 ~]#bash test6.sh
    14. 1
    15. 3
    16. 5
    17. 7
    18. 9
    19. -------------
    20. 2
    21. 4
    22. 6
    23. 8
    24. 10

    (2)迭代 

    for ((i=1;i<=10;i++))

    do

        命令序列              

    done

    //类似c语言的迭代方式,第一个字段定义变量并赋给初始值;第二个字段指定循环范围条件;第三个字段指定迭代规则(类似步长)

    1. [root@localhost1 ~]#vim test7.sh
    2. #!/bin/bash
    3. for ((i=1;i<=10;i++))
    4. do
    5. echo $i
    6. done
    7. [root@localhost1 ~]#bash test7.sh
    8. 1
    9. 2
    10. 3
    11. 4
    12. 5
    13. 6
    14. 7
    15. 8
    16. 9
    17. 10

    4.操作实例

    1. //批量创建用户并修改密码
    2. [root@localhost1 data]#vim adduser.sh
    3. #!/bin/bash
    4. for user in {1..10}
    5. do
    6. useradd user${user}
    7. echo "123456" | passwd --stdin user${user}
    8. done
    9. [root@localhost1 data]#bash adduser.sh
    10. 更改用户 user1 的密码 。
    11. passwd:所有的身份验证令牌已经成功更新。
    12. 更改用户 user2 的密码 。
    13. passwd:所有的身份验证令牌已经成功更新。
    14. 更改用户 user3 的密码 。
    15. passwd:所有的身份验证令牌已经成功更新。
    16. 更改用户 user4 的密码 。
    17. passwd:所有的身份验证令牌已经成功更新。
    18. 更改用户 user5 的密码 。
    19. passwd:所有的身份验证令牌已经成功更新。
    20. 更改用户 user6 的密码 。
    21. passwd:所有的身份验证令牌已经成功更新。
    22. 更改用户 user7 的密码 。
    23. passwd:所有的身份验证令牌已经成功更新。
    24. 更改用户 user8 的密码 。
    25. passwd:所有的身份验证令牌已经成功更新。
    26. 更改用户 user9 的密码 。
    27. passwd:所有的身份验证令牌已经成功更新。
    28. 更改用户 user10 的密码 。
    29. passwd:所有的身份验证令牌已经成功更新。
    30. [root@localhost1 data]#tail /etc/passwd
    31. user1:x:1002:1002::/home/user1:/bin/bash
    32. user2:x:1003:1003::/home/user2:/bin/bash
    33. user3:x:1004:1004::/home/user3:/bin/bash
    34. user4:x:1005:1005::/home/user4:/bin/bash
    35. user5:x:1006:1006::/home/user5:/bin/bash
    36. user6:x:1007:1007::/home/user6:/bin/bash
    37. user7:x:1008:1008::/home/user7:/bin/bash
    38. user8:x:1009:1009::/home/user8:/bin/bash
    39. user9:x:1010:1010::/home/user9:/bin/bash
    40. user10:x:1011:1011::/home/user10:/bin/bash

    二、 while 循环

    1.用法和特点

    满足条件就一直循环,一旦不满足条件立刻跳出循环

    while循环常在不知道范围的时候使用

    基于这个特点 无限循环可以使用 while true

    while 条件表达式

    do

        命令序列              

    done

    2.操作实例

    1. //百米赛跑,速率为10m/s
    2. [root@localhost1 data]#vim whiletest.sh
    3. #!/bin/bash
    4. i=0
    5. rate=10
    6. s=0
    7. while [ $i -lt 100 ]
    8. do
    9. let i+=$rate
    10. let s++
    11. done
    12. echo "您一共用了$s秒!"
    13. //一共用了10s
    14. [root@localhost1 data]#bash whiletest.sh
    15. 您一共用了10秒!

    三、until 循环

    1.用法和特点

    重复测试某个条件,只要条件不成立则反复执行

    until 条件表达式

    do

        命令序列              

    done

    2.操作实例 

    1. //使用until循环实现数字累加
    2. [root@localhost1 data]#vim sum.sh
    3. #!/bin/bash
    4. sum=0
    5. i=1
    6. until [ $i -gt 100 ] --当i不大于100使会一直执行
    7. do
    8. sum=$[sum + i] --将每次执行后的i累加到sum
    9. let i++ --每次执行后i自加
    10. done
    11. echo $sum
    12. [root@localhost1 data]#bash sum.sh
    13. 5050
  • 相关阅读:
    java专家系统房产营销智能推荐系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    开源共建 | 中国移动冯江涛:ChunJun(原FlinkX)在数据入湖中的应用
    composer 安装如何彻底删除
    我屮艸芔茻,mongo居然可以自动删除数据
    设计模式——解释器模式
    Jetpack:013-Jetpack底部导航栏
    Allegro DFM Ravel Rule PAD到板边间距检查
    kepler.gl笔记:添加数据
    使用 B+ 树 or 使用跳表?
    虚幻引擎:UEC++如何对JSON文件进行读写?
  • 原文地址:https://blog.csdn.net/weixin_58544496/article/details/126520420