18-流程控制-while循环-《shell脚本》

admin 2025-11-06 14:39:36 系统网络 来源:ZONE.CI 全球网 0 阅读模式
  • 一、循环语句-while
    • 1.1、while介绍
    • 1.2、while语法
    • 1.3、while与shell运算
    • 1.4、while与循环控制语句
    • 1.5、while嵌套其他语句

    一、循环语句-while

    while在shell中也是负责循环的语句,和for一样。因为功能一样,很多人在学习和工作中的脚本遇到循环到底该使用for还是while呢?很多人不知道,就造就了有人一遇到循环就是for或者一位的while。我个人认为可以按照我说的这个思想来使用,既知道循环次数就可以用for,比如说一天需要循环24次;如果不知道代码要循环多少次,那就用while,比如我们作业中要求写的猜数字,每个人猜对一个数字的次数都是不能固定的,也是未知的。所以这样的循环我就建议大家用while了。

    1.1、while介绍

    特点:条件为真就进入循环;条件为假就退出循环,一般应用在未知循环次数的环境。

    1.2、while语法

    1. while [ 表达式 ]
    2. do
    3. command...
    4. done
    5. while [ 1 -eq 1 ] 或者 (( 1 > 2 ))
    6. do
    7. command
    8. command
    9. ...
    10. done

    案例使用for循环和while循环分别循环打印数组1-5案例代码

    1. for循环打印:
    2. for ((i=1;i<=5;i++))
    3. do
    4. echo $i
    5. done
    6. while循环打印:
    7. #打印数字1-5
    8. #!/bin/bash
    9. #
    10. #Author: www.zutuanxue.com
    11. #Created Time:
    12. #Release:
    13. #Description: 打印1-5
    14. num=1
    15. while [ $num -le 5 ]
    16. do
    17. echo $num
    18. let num++
    19. done

    备注: 知道循环次数就可以用for,比如说一天需要循环24次;如果不知道代码要循环多少次,那就用while,比如我们作业中要求写的猜数字,每个人猜对一个数字的次数都是不能固定的,也是未知的。

    1.3、while与shell运算

    1.3.1)比较运算案例:循环交互输入一个小写字母,按Q退出循环案例代码

    1. #按Q退出场景
    2. #!/bin/bash
    3. #
    4. #Author: www.zutuanxue.com
    5. #Created Time:
    6. #Release:
    7. #Description:
    8. read -p "请输入一个小写字母,按Q退出: " choose
    9. while [ $choose != 'Q' ]
    10. do
    11. echo "你输入的是: $choose"
    12. read -p "请输入一个小写字母,按Q退出: " choose
    13. done

    1.3.2)逻辑运算案例:使用循环语句帮助丈母娘批量选择女婿案例代码

    1. #!/bin/bash
    2. #
    3. #Author: www.zutuanxue.com
    4. #Created Time:
    5. #Release:
    6. #Description:
    7. #丈母娘选女婿 分别按照姑娘20 30 40 进行与或非模拟
    8. #1.第一个应征者回答
    9. read -p "你有多少钱: " money
    10. read -p "你有多少车: " car
    11. read -p "你家房子有几套: " house
    12. #while [ $money -lt 10000 ]&&[ $car -lt 1 ]&&[ $house -lt 2 ]
    13. while [ $money -lt 10000 ]||[ $car -lt 1 ]||[ $house -lt 2 ]
    14. do
    15. #应征者不满住条件开始下一次循环
    16. echo "有请下一个"
    17. read -p "你有多少钱: " money
    18. read -p "你有多少车: " car
    19. read -p "你家房子有几套: " house
    20. done
    21. #应征者满足条件
    22. echo "乖女婿,你怎么才来啊!女儿给你了"

    1.3.3)文件类型判断案例:使用循环判断/tmp/xxx目录下的文件,如果不是文件类型的打印字符串”目录”案例代码

    1. 文件类型判断
    2. #!/bin/bash
    3. #
    4. #Author: www.zutuanxue.com
    5. #Created Time:
    6. #Release:
    7. #Description:
    8. while [ ! -f /tmp/xxx ]
    9. do
    10. echo “目录”
    11. sleep 1
    12. done

    1.3.4)特殊条件while语句中可以使用特殊条件来进行循环:

    • 符号”:” 条件代表真,适用与无限循环
    • 字符串 “true” 条件代表真,适用与无限循环
    • 字符串 “false”条件代表假

    代码展示

    1. 特殊符号 : 代表真
    2. #!/bin/bash
    3. #
    4. #Author: www.zutuanxue.com
    5. #Created Time:
    6. #Release:
    7. #Description:
    8. while :
    9. do
    10. echo haha
    11. sleep 1
    12. done
    13. true 字符串代表真,和:类似
    14. #!/bin/bash
    15. #
    16. #Author: www.zutuanxue.com
    17. #Created Time:
    18. #Release:
    19. #Description:
    20. while true
    21. do
    22. echo haha
    23. sleep 1
    24. done
    25. false 字符串代表假,在while中不会开始循环

    1.4、while与循环控制语句

    1.4.1)sleep语句

    1. #!/bin/bash
    2. #
    3. #Author: www.zutuanxue.com
    4. #Created Time:
    5. #Release:
    6. #Description: 倒计时游戏
    7. #1.定义初始值
    8. time=9
    9. #2.循环输出,1秒一次
    10. while [ $time -ge 0 ]
    11. do
    12. echo -n -e "\b$time"
    13. let time--
    14. #控制循环 1秒一次
    15. sleep 1
    16. done
    17. #回车
    18. echo

    1.4.2)break

    1. #!/bin/bash
    2. #
    3. #Author: www.zutuanxue.com
    4. #Created Time:
    5. #Release:
    6. #Description: 输出数字1-9,当输出5时停止
    7. #1、定义初始值
    8. num=1
    9. while [ $num -lt 10 ]
    10. do
    11. echo $num
    12. #判断当前num的值,如果等于5就跳出循环
    13. if [ $num -eq 5 ]
    14. then
    15. break
    16. fi
    17. #自动累加
    18. let num++
    19. done

    1.4.3)continue

    1. #!/bin/bash
    2. #
    3. #Author:
    4. #Created Time:
    5. #Release:
    6. #Description: 输出数字1-9,当等于5时跳过本次循环,输出1、2、3、4、6、7、8、9
    7. #1、定义初始值
    8. num=0
    9. while [ $num -lt 9 ]
    10. do
    11. #自动累加
    12. let num++
    13. #判断当前num的值,如果等于5就跳过本次循环
    14. if [ $num -eq 5 ]
    15. then
    16. continue
    17. fi
    18. #输出num的值
    19. echo $num
    20. done

    1.5、while嵌套其他语句

    1.5.1)while嵌套if

    1. #!/bin/bash
    2. #
    3. #Author: www.zutuanxue.com
    4. #Created Time:
    5. #Release:
    6. #Description: 输出数字1-9,当输出5时停止
    7. #1、定义初始值
    8. num=1
    9. while [ $num -lt 10 ]
    10. do
    11. echo $num
    12. #判断当前num的值,如果等于5就跳出循环
    13. if [ $num -eq 5 ]
    14. then
    15. break
    16. fi
    17. #自动累加
    18. let num++
    19. done

    1.5.2)while嵌套for

    1. #!/bin/bash
    2. #
    3. #Author: www.zutuanxue.com
    4. #Created Time:
    5. #Release:
    6. #Description: 99乘法表
    7. A=1
    8. while [ $A -lt 10 ]
    9. do
    10. for ((B=1;B<=$A;B++))
    11. do
    12. echo -n -e "$B*$A=$((A*B)) \t"
    13. done
    14. echo
    15. let A++
    16. done

    1.5.3)while嵌套while

    1. #!/bin/bash
    2. #
    3. #Author: www.zutuanxue.com
    4. #Created Time:
    5. #Release:
    6. #Description: 99乘法表
    7. #定义A
    8. A=1
    9. while [ $A -lt 10 ]
    10. do
    11. #定义B
    12. B=1
    13. while [ $B -le $A ]
    14. do
    15. echo -n -e "$B*$A=$((A*B)) \t"
    16. let B++
    17. done
    18. echo
    19. let A++
    20. done
    01-shell脚本介绍-《shell脚本》 系统网络

    01-shell脚本介绍-《shell脚本》

    一、shell脚本是什么二、为什么要学shell,而不是其他计算机语言三、学习这门课程的优势四、学了能干什么五、学习什么内容六、学习的技巧七、成长路径八、学习环
    评论:0   参与:  25