循环语句for-do-done

语法格式:

for var in list

do

        commands

done

或:

for var in list ; do

        commands

done

image.png

取值列表有多种取值方式,比如可以

直接读取in 后面的值,默认以空格做分隔

[root@xuegod63 ~]# vim for-1.sh

#!/bin/bash

for var in a1 b1 c1 d1

do

echo the text is $var

done

列表中的复杂值,可以使用引号或转义字符"\"来加以约束

[root@xuegod63 ~]# cat for-2.sh   

#!/bin/bash

for var in a1 b1 "c1 d1" e2 "hello world"

do

echo the text is $var

done

[root@xuegod63 ~]# cat for-3.sh 

#!/bin/bash

for var in a1 b\'1 "c1 d1" e2 "hello world" I\'s a22 

do

echo the text is $var

done

从变量中取值

[root@xuegod63 ~]# cat for-4.sh 

#!/bin/bash

list="a1 b1 c1 d1"

for i in $list

do

echo is a $i

done

从命令中取值

[root@xuegod63 ~]# cat for-5.sh   #以空格做分隔符

#!/bin/bash

for i in `cat  /etc/hosts`

do

echo "$i"

done

自定义shell分隔符

默认情况下,base shell会以空格、制表符、换行符做为分隔符。通过IFS来自定义为分隔符

指定单个字符做分隔符:

IFS=:   #以:冒号做分隔符

可以指定多个

如 IFS='\n':;"     #这个赋值会将反斜杠、n、冒号、分号和双引号作为字段分隔符。

注:$'\n'与'\n'时的区别

IFS='\n'    #将字符\和字符n作为IFS的换行符。

IFS=$'\n'   #正真的使用换行符做为字段分隔符。

[root@xuegod63 ~]# cat for-6.sh  

#!/bin/bash

IFS=$'\n'    #指定以\n回车做为 for语句的分隔符

for i in `cat /etc/hosts`

do

echo "$i"

done

 [root@xuegod63 ~]# cat for-7.sh   #以:冒号做分隔符

#!/bin/bash

IFS=:

list=`head -1 /etc/passwd`

for i in $list

do

echo $i

done

C语言风格的for

语法格式:

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

do

   commmands

done

例1:单个变量。 输出1到10之间的数字

[root@xuegod63 ~]# cat for-8.sh 

#!/bin/bash

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

do

echo num is $i

done

注:

互动:  i++ 这一条语句在for循环体中哪个位置执行?

for ((  i=1  ; i<=10  ;    ))   #i=1 只赋值一次。然后执行 i <= 10

do

echo num is $i

i=$(($i+1))    # i++在这里执行。 当for循环体中所有命令执行完后,再执行i++

done

例2:多个变量。 同时输出1-9的升序和降序

 

[root@xuegod63 ~]# cat for-8.sh 

#!/bin/bash

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

do

echo num is $a - $b 

done

版权声明:
作者:WaterBear
链接:https://l-t.top/1616.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>