700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Shell脚本中循环语句for while until用法

Shell脚本中循环语句for while until用法

时间:2024-05-06 12:54:38

相关推荐

Shell脚本中循环语句for while until用法

循环语句:

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

一、for循环

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

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

for的语法结构如下:

1.for变量in串行

2.do

3.执行命令

4.done

说明:

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

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

流程图:

用例1

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

01.#!/bin/bash

02.forkin$(seq1 10 )

03.do

04.mkdir/home/kuangl/aaa${k}

05.cd/home/kuangl/aaa${k}

06.forlin$(seq1 10 )

07.do

08.mkdirbbb${l}

09.cd/home/kuangl/aaa${k}

10.done

11.cd..

12.done

说明:

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

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

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

测试结果:

01.[root@test01kuangl]# ll

02.total 80

03.drwxr-xr-x 12root root 4096 Jul 20 01:23 aaa1

04.drwxr-xr-x12 root root 4096 Jul 20 01:23 aaa10

05.drwxr-xr-x 12root root 4096 Jul 20 01:23 aaa2

06.drwxr-xr-x12 root root 4096 Jul 20 01:23 aaa3

07.drwxr-xr-x 12root root 4096 Jul 20 01:23 aaa4

08.drwxr-xr-x12 root root 4096 Jul 20 01:23 aaa5

09.drwxr-xr-x 12root root 4096 Jul 20 01:23 aaa6

10.drwxr-xr-x12 root root 4096 Jul 20 01:23 aaa7

11.drwxr-xr-x 12root root 4096 Jul 20 01:23 aaa8

12.drwxr-xr-x12 root root 4096 Jul 20 01:23 aaa9

13.[root@test01kuangl]# cd aaa1

14.[root@test01aaa1]# ll

15.total 40

16.drwxr-xr-x 2root root 4096 Jul 20 01:23 bbb1

17.drwxr-xr-x 2root root 4096 Jul 20 01:23 bbb10

18.drwxr-xr-x 2root root 4096 Jul 20 01:23 bbb2

19.drwxr-xr-x 2root root 4096 Jul 20 01:23 bbb3

20.drwxr-xr-x 2root root 4096 Jul 20 01:23 bbb4

21.drwxr-xr-x 2root root 4096 Jul 20 01:23 bbb5

22.drwxr-xr-x 2root root 4096 Jul 20 01:23 bbb6

23.drwxr-xr-x 2root root 4096 Jul 20 01:23 bbb7

24.drwxr-xr-x 2root root 4096 Jul 20 01:23 bbb8

25.drwxr-xr-x 2root root 4096 Jul 20 01:23 bbb9

用例2

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

1.#!/bin/bash

2.DIR="/var"

3.cd$DIR

4.forkin$(ls$DIR)

5.do

6.[ -d $k ]&&du-sh $k

7.done

说明:

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

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

测试结果:

01.[root@test01scripts]# ./var.sh

02.276Mcache

03.4.0Kcvs

04.84K db

05.8.0Kempty

06.4.0Kftp

07.4.0Kgames

08.4.0Kgdm

09.21G lib

10.4.0Klocal

11.16K lock

12.7.4Glog

13.4.0Klogs

14.0mail

15.4.0Knis

16.4.0Kopt

17.4.0Kpreserve

18.336Krun

19.3.7Gspool

20.212Ktmp

21.4.1Gwww

22.4.0Kyp

二、while循环

while循环的语法:

1.while条件测试

2.do

3.执行命令

4.done

说明:

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

不进入循环,介绍while 命令

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

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

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

流程图:

用例1

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

1.#!/bin/bash

2.whilereadkuangl

3.do

4.echo${kuangl}

5.done</home/kuangl/scripts/testfile

说明:

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

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

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

测试结果:

1.[root@test01scripts]# ./while_test01.sh

2.aaaaaaa

3.bbbbbbb

用例2

01.#!/bin/bash

02.declare-i i=1

03.declare-isum=0

04.while((i<=10))

05.do

06.letsum+=i

07.let++i

08.done

09.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

测试结果:

1.[root@test01scripts]# ./while_02.sh

2.55

三、until循环

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

until循环的语法:

1.until条件测试

2.do

3.执行命令

4.done

说明:

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

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

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

流程图:

用例1

01.#!/bin/bash

02.declare-i i=10

03.declare-isum=0

04.until((i>10))

05.do

06.letsum+=i

07.let++i

08.done

09.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

测试结果:

1.[root@test01scripts]# ./until_test01.sh

2.10

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。