For循环语句概述

while 死循环 无限循环 只要条件为真,就可以无限循环下去

for 循环 

条件为真时,执行循环语句,当条件为假时,循环结束,退出循环

#语法

for  变量  in  取值列表

do

循环体

done

#取值列表

#for取值列表有很多种方法进行取值,值存放在in的后面, 默认是以空白字符为分割符

[root@shell /scripts]# cat for-1.sh

#!/bin/bash

for i in file1 file2 file3

do

    echo $i

    echo "本次循环结束!"

done

[root@shell /scripts]# sh for-1.sh

file1

本次循环结束!

file2

本次循环结束!

file3

本次循环结束!

#如果取值列表中出现特殊字符,使用转义字符进行转义

[root@shell /scripts]# cat for-2.sh

#!/bin/bash

for i in file1 \$file2 file3

do

    echo $i

    echo "本次循环结束!"

done

[root@shell /scripts]# sh for-2.sh

file1

本次循环结束!

$file2

本次循环结束!

file3

本次循环结束!

#取值列表中的单独的值存在空格时,需要对其使用引号括起来

[root@shell /scripts]# cat for-2.sh

#!/bin/bash

for i in 'file1 test' file2 file3

do

    echo $i

    echo "本次循环结束!"

done

[root@shell /scripts]# sh for-2.sh

file1 test

本次循环结束!

file2

本次循环结束!

file3

本次循环结束!

#根据变量进行取值

[root@shell /scripts]# cat for-3.sh

#!/bin/bash

List="file1 file2 file3"

for i in $List

do

    echo $i

    echo "本次循环结束!"

done

[root@shell /scripts]# sh for-3.sh

file1

本次循环结束!

file2

本次循环结束!

file3

本次循环结束!

#通过命令中进行取值

[root@shell /scripts]# cat for-4.sh

#!/bin/bash

for i in $(cat /etc/hosts) 

do

    echo $i

    echo "本次循环结束!"

done

[root@shell /scripts]# sh for-4.sh

127.0.0.1

本次循环结束!

localhost

本次循环结束!

localhost.localdomain

本次循环结束!

localhost4

本次循环结束!

localhost4.localdomain4

本次循环结束!

::1

本次循环结束!

localhost

本次循环结束!

localhost.localdomain

本次循环结束!

localhost6

本次循环结束!

localhost6.localdomain6

本次循环结束!

#取值列表中,指定分割符

[root@shell /scripts]# cat for-5.sh

#!/bin/bash

IFS=$'\n' #指定换行符为分割符

for i in $(cat /etc/hosts) 

do

    echo $i

    echo "本次循环结束!"

done

[root@shell /scripts]# sh for-5.sh

127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4

本次循环结束!

::1        localhost localhost.localdomain localhost6 localhost6.localdomain6

本次循环结束!

#以冒号为分割符

[root@shell /scripts]# cat for-5.sh

#!/bin/bash

IFS=:

for i in $(head -1 /etc/passwd) 

do

    echo $i

    echo "本次循环结束!"

done

[root@shell /scripts]# sh for-5.sh

root

本次循环结束!

x

本次循环结束!

0

本次循环结束!

0

本次循环结束!

root

本次循环结束!

/root

本次循环结束!

/bin/bash

本次循环结束!

#指定多个分割符

[root@shell /scripts]# cat for-5.sh

#!/bin/bash

IFS=:' ' #以冒号或者空格为分隔符

for i in $(cat test.txt) 

do

    echo $i

    echo "本次循环结束!"

done

[root@shell /scripts]# sh for-5.sh

root

本次循环结束!

x

本次循环结束!

123

本次循环结束!

rot

本次循环结束!

oldboy

本次循环结束!

567

本次循环结束!

#for循环中的C语言风格

把数字从1到9进行升序排序

[root@shell /scripts]# cat for-6.sh

#!/bin/bash

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

do

    echo $i

done

[root@shell /scripts]# sh for-6.sh

1

2

3

4

5

6

7

8

9

#打印两个变量值 升序  降序

[root@shell /scripts]# cat for-6.sh

#!/bin/bash

for ((a=1,b=9;a<10;a++,b--))

do

    echo $a $b

done

[root@shell /scripts]# sh for-6.sh

1 9

2 8

3 7

4 6

5 5

6 4

7 3

8 2

9 1

for循环实现两个数字的升序和降序

[root@shell /scripts]# cat for-7.sh

#!/bin/bash

a=0

b=10

for i in {1..9}

do

    let a++

    let b--

    echo $a $b

done

[root@shell /scripts]# sh for-7.sh

1 9

2 8

3 7

4 6

5 5

6 4

7 3

8 2

9 1

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。