循环语句:

Bash Shell中主要提供了三种循环方式:for、while和until。

一、for循环

for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区域(在do和done 之间),直到所有元素取尽为止。

其中,串行是一些字符串的组合,彼此用$IFS所定义的分隔符(如空格符)隔开,这些字符串称为字段。

for的语法结构如下:

for 变量 in 串行
do执行命令
done

说明:

行1,讲串行中的字段迭代放入变量中

行2-4,接着将重复执行do和done之间的命令区域,直到串行中每一个字段军处理过为止。

流程图

例1:

用for循环在家目录下创建aaa1-aaa10,然后在aaa1-aaa10创建bbb1-bbb10的目录

#!/bin/bash
for a in {1..10}
domkdir /datas/aaa$acd /datas/aaa$afor b in {1..10}domkdir bbb$bdone
done

 1 #!/bin/bash2 for k in $( seq 1 10 )3 do4    mkdir /home/kuangl/aaa${k}5    cd /home/kuangl/aaa${k}6    for l in $( seq 1 10 )7    do8    mkdir bbb${l}9    cd /home/kuangl/aaa${k}
10    done
11    cd ..
12 done

说明:

行2,seq 用于产生从某个数到另外一个数之间的所有整数。

行4,在家目录下创建文件夹。

行6,在使用一个for循环创建文件夹

例2

列出var目录下各子目录占用磁盘空间的大小。

1 #!/bin/bash
2 DIR="/var"
3 cd $DIR
4 for k in $(ls $DIR)
5 do
6   [ -d $k ] && du -sh $k
7 done

说明:

行4,对/var目录中每一个文件,进行for循环处理。

行6,如果/var下的文件是目录,则使用du -sh计算该目录占用磁盘空间的大小。

二、while循环

while循环的语法:

1 while 条件测试
2 do
3   执行命令
4 done

说明:

行1,首先进行条件测试,如果传回值为0(条件测试为真),则进入循环,执行命令区域,否则

不进入循环,介绍while 命令

行3,执行命令区域,这些命令中,应该要有改变条件测试的命令,这样,才有机会在

有限步骤后结束执行while循环(除非想要执行无穷循环)。

行4,回到行1,执行while命令

流程图:

例1

while循环,经典的用法是搭配转向输入,读取文件的内容,做法如下:

#!/bin/bash
while read a
doecho $a
done < /datas/6files
1 #!/bin/bash
2 while read kuangl
3 do
4   echo ${kuangl}
5 done < /home/kuangl/scripts/testfile

说明:

行2,使用read有标准输入读取数据,放入变量kuangl中,如果读到的数据非空,就进入循环。

行4,把改行数据显示出来

行5,将/home/kuangl/scripts/testfile的内容转向输入将给read读取。

例2

1 #!/bin/bash
2 declare -i i=1
3 declare -i sum=0
4 while ((i<=10))
5 do
6   let sum+=i
7   let i++
8 done
9 echo $sum

1 #!/bin/bash
2 declare -i i=1
3 declare -i sum=0
4 while ((i<=10))
5 do
6   let sum+=i
7   let ++i
8 done
9 echo $sum

说明:

行2-3,声明i和sum为整数型

行4,如果条件测试:只要i值小于或者等于10,就执行循环。

行6,sum+=i和sum=sum+i是一样的,sum累加上i。

行7,i的值递增1,此行是改变条件测试的命令,一旦i大于10,可终止循环。

行8,遇到done,回到行6去执行条件测试

行9,显示sum的值为55

例3  while99乘法表

 1 #!/bin/bash2 a=13 b=14 while ((a <=9))5 do6         while ((b<=a))7         do8                 let "c=a*b"   #声明变量c9                 echo -n  "$a*$b=$c "
10                 let b++
11         done
12         let a++
13         let b=1  #因为每个乘法表都是1开始乘,所以b要重置
14         echo "" #显示到屏幕换行
15 done

说明:

行8,声明变量c

行9,echo输出显示的格式,-n不换行输出

行13,let b=1因为每个乘法表都是1开始乘,所以b要重置

三、until循环

while循环的条件测试是测真值,until循环则是测假值。

until循环的语法:

1 until 条件测试
2 do
3  执行命令
4 done

说明:

行1,如果条件测试结果为假(传回值不为0),就进入循环。

行3,执行命令区域。这些命令中,应该有改变条件测试的命令,这样子,才有机会在有限步骤后结束执行until 循环(除非你想要执行无穷循环)。

行4,回到行1,执行until命令。

流程图:

例1

1 #!/bin/bash
2 declare -i i=10
3 declare -i sum=0
4 until ((i>10))
5 do
6   let sum+=i
7   let ++i
8 done
9 echo $sum

说明:

行2-3,声明i和sum为整数型

行4,如果条件测试:只要i值未超过10,就进入循环。

行6,sum+=i和sum=sum+i是一样的,sum累加上i。

行7,i的值递增1,此行是改变条件测试的命令,一旦i大于10,可终止循环。

行8,遇到done,回到行6去执行条件测试

行9,显示sum的值为10

例2    until99乘法表

 1 #!/bin/bash2 a=13 b=14 until ((a>9)) #until 和while相反,条件假的执行,条件真就done结束5 do6         until ((b>a))7         do8                 let "c=a*b"9                 echo -n "$a*$b=$c "
10                 let b++
11         done
12         let a++
13         let b=1
14         echo ""
15 done

说明:

行4,如果条件测试:只要a值未超过9,就进入循环,一旦超过9就不执行,until和while条件相反,条件真就done结束

行6,b>a,一旦b大于a就不执行了

Shell脚本中的循环相关推荐

  1. shell 脚本中while 循环只执行一次的问题

    自己写的一个获取所有远程服务器数据库启动配置信息的bash 脚本,发现循环里的ssh远程命令只能执行一次,感觉很奇怪,以前没这么使用过, 我的脚本为 #!/bin/bash ## generate a ...

  2. shell脚本中for循环及while循环写法

    for循环 例1 **展示上面的数组 #!/bin/bash #脚本名称为222.sh name1="nihao1" name2="nihao2" name3= ...

  3. shell脚本for循环_了解Shell脚本中的for循环

    shell脚本for循环 Continuing on from our previous tutorials, let's understand the for loop in shell scrip ...

  4. Shell脚本中循环select命令用法笔记

    在Shell脚本中,select命令是一种菜单扩展的循环方式. 语法结构如下: select Menu in (list) do command done 说明:当程序运行到select语句时,会自动 ...

  5. Shell脚本中循环until命令用法笔记

    在shell脚本中,可以使用until执行循环处理,如果使用until命令的话如果表达式的结果为false时才执行循环体,直到测试表达式的值为true的时候才会 停止循环. 语法结果如下: until ...

  6. 【Linux】Shell脚本中如何使用“循环”遍历“数组”中的元素(包括MySQL的常用指令介绍)

    一.背景 实习过程中,今天mentor突然让我拉取一下远端园区数据库中的部分信息,因为包含很多不同园区的数据信息,而且要以园区为单位生成文件来对数据进行存放,因此自然是需要使用shell脚本来自动生成 ...

  7. 【shell脚本】沐风晓月跟你聊聊shell脚本中的while循环

    前言 上篇文章我们探讨了for循环,如果你还没有开始学习,可以点击链接学习:https://blog.csdn.net/wisdom_futrue/article/details/131402075 ...

  8. shell脚本中的特殊变量与if条件测试

    1.特殊变量 实际工作中我们不可避免的遇到一些xxxx.sh脚本文件,实际阅读shell脚本代码时经常会遇到很多特殊变量(例如:$0.$n.$#.$@.$*.$?.$$等),我们常常会被这些特殊符号折 ...

  9. 数组-在Shell脚本中的基本使用介绍

    2019独角兽企业重金招聘Python工程师标准>>> Shell脚本在运维工作中是极其重要的,而数组在shell脚本里的运用无论是在循环或运算方面都是非常实用的一个环节. 下面是对 ...

最新文章

  1. 学习如何面对失败比成功更重要
  2. 【Python-ML】神经网络-Theano张量库(GPU版的Numpy)
  3. UA MATH566 统计理论2 点估计基础
  4. Netty专题-(1)初识Netty
  5. Python 读写文件和file对象(转)
  6. IE6下div宽高设置
  7. [leetcod] Clone Graph
  8. 用正则表达式抽取文本
  9. libspark.swfassist的体会
  10. 2的指数算法唯一算包含信息
  11. SQL数据库的使用:创建表结构
  12. 中心频点计算公式_5G中的频点计算及实例分析
  13. 线性代数与MATLAB2
  14. 随机字符 php,PHP生成随机字符
  15. Qt那些事儿-Qt基础教程
  16. MATLAB clc clear
  17. Python 入门-Task1 变量、运算符、数据类型及位运算
  18. 解决win7语言栏消失问题
  19. 我的世界:mc创世神插件WorldEdit使用
  20. Java从键盘上输入一个正整数n,然后计算1+2+...+n的结果并输出

热门文章

  1. hiper – web_Web设计行业分析–专业人士与业余者[信息图]
  2. REVV Racing 联手 SuperPlastic,为您带来 Chunder 迷宫锦标赛
  3. 使用Python控制手机(一)
  4. Linux设置虚拟内存
  5. 啊哈C——学习3.6一起来找茬
  6. A. Déjà Vu
  7. lanker php 大码,GitHub - TREYWANGCQU/LANKERS: CQU-LANKERS
  8. 【干货】Python爬虫/文本处理/科学计算/机器学习/数据挖掘兵器谱
  9. [10.96.0.1]:443/apis/crd.projectcalico.org/v1/clusterinformations/default: timeout
  10. 分布式GK Summary算法