Skip to content
KARINKARIN
博客主页
项目总览
知识要点
捣鼓折腾
Git笔记
Excel修炼秘籍
github icon
  • 博客主页
    • 项目总览
          • Shell脚本笔记
            • Shell脚本介绍
              • Shell语法
                • Shell格式化输出
                  • Shell格式化输入
                    • Shell变量
                      • Shell数组
                        • Shell运算
                          • Shell流程控制---if判断语句
                            • Shell流程控制---for循环语句
                              • Shell流程控制---while循环语句
                                • while 循环介绍
                                  • while 循环语法
                                    • while 实战
                                    • Shell流程控制---until循环语句
                                      • Shell流程控制---case分支语句
                                        • Shell函数
                                          • Shell正则表达式
                                            • Shell对文本的搜索---grep命令
                                              • Shell对文件的操作---sed命令
                                                • Shell对输出流的处理---awk命令
                                                  • Shell监控脚本
                                                    • Shell脚本---lamp环境安装

                                                  Shell流程控制---while循环语句

                                                  author iconkarincalendar icon2021年4月9日category icon
                                                  • 教程
                                                  tag icon
                                                  • shell
                                                  timer icon大约 2 分钟

                                                  此页内容
                                                  • while 循环介绍
                                                  • while 循环语法
                                                  • while 实战

                                                  # while 循环介绍

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

                                                  # while 循环语法

                                                  语法格式

                                                  while [ condition ];do
                                                  	commands
                                                  done
                                                  
                                                  1
                                                  2
                                                  3

                                                  注意:条件为真,while 才会循环;条件为假,while 停止循环

                                                  条件可以是之前学习的五种运算:数学比较、字符串比较、文件类型、逻辑运算、赋值运算

                                                  小作业试写 while 循环输出 1-9,当输出到5的时候,停止循环。(break) while 循环输出 1-9,当输出5的时候,跳过本次循环。(continue) while 循环输出 1-9,每隔 1 秒输出一个数字。(sleep) while 循环嵌套 for 循环,或者 for 循环嵌套while循环(九九乘法表) while 循环输出 1-10 嵌套 if 判断(奇偶数判断)

                                                  补充:如果把某一段代码注释,不用每一行前面都加上#,可以利用定义函数方法来注释

                                                  name(){
                                                  	commands
                                                  }
                                                  
                                                  1
                                                  2
                                                  3

                                                  运行脚本,上面花括号{ }内的代码将不会执行。

                                                  # while 实战

                                                  使用 while 遍历文件内容(grep 过滤)

                                                  [root@localhost ~ ]# vim while_read.sh
                                                  #!/bin/bash
                                                  cat /etc/passwd | grep "bash" | while read i;do
                                                  	echo $i
                                                  done 
                                                  [root@localhost ~ ]# bash while_read.sh
                                                  root:x:0:0:root:/root:/bin/bash
                                                  karin:x:1000:1000:karin,,,:/home/karin:/bin/bash
                                                  [root@localhost ~ ]# 
                                                  
                                                  1
                                                  2
                                                  3
                                                  4
                                                  5
                                                  6
                                                  7
                                                  8
                                                  9

                                                  九九乘法表(嵌套)

                                                  [root@localhost ~ ]# vim 99.sh
                                                  #!/bin/bash
                                                  n=1
                                                  while [ $n -lt 10 ];do
                                                          for ((m=1;m<=$n;m++));do
                                                                  echo -n -e  "$m*$n=$((n*m))\t"
                                                          done
                                                          echo
                                                          n=$((n+1))
                                                  done
                                                  [root@linux ~ ]# bash 99.sh
                                                  1*1=1	
                                                  1*2=2	2*2=4	
                                                  1*3=3	2*3=6	3*3=9	
                                                  1*4=4	2*4=8	3*4=12	4*4=16	
                                                  1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	
                                                  1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	
                                                  1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=4
                                                  1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	
                                                  1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81
                                                  [root@localhost ~ ]# 
                                                  
                                                  1
                                                  2
                                                  3
                                                  4
                                                  5
                                                  6
                                                  7
                                                  8
                                                  9
                                                  10
                                                  11
                                                  12
                                                  13
                                                  14
                                                  15
                                                  16
                                                  17
                                                  18
                                                  19
                                                  20
                                                  21
                                                  edit icon编辑此页open in new window
                                                  上一页
                                                  Shell流程控制---for循环语句
                                                  下一页
                                                  Shell流程控制---until循环语句
                                                  MIT Licensed
                                                  Copyright © 2022 karin