for语法格式:html
for 变量 in 参数列表 do 命令 done 或者 for 变量 in 参数列表 ; do 命令 done
for语句流程控制图:shell
实例:vim
[root@youxi1 ~]# vim a.sh #!/bin/bash for var in a1 a2 b1 b2 do echo $var done [root@youxi1 ~]# sh a.sh a1 a2 b1 b2
参数列表能够更复杂些,部分特殊符号须要转义bash
[root@youxi1 ~]# vim b.sh #!/bin/bash for var in I\'m "hello world" "c1 c2 d1 d2" do echo $var done [root@youxi1 ~]# sh b.sh I'm hello world c1 c2 d1 d2
参数列表还能够从变量中读取,能够是多个变量post
[root@youxi1 ~]# vim c.sh #!/bin/bash list="e1 e2 f1 f2" list2="hello world" for var in $list $list2 do echo $var done [root@youxi1 ~]# sh c.sh e1 e2 f1 f2 hello world
参数列表还能够从命令中取值spa
[root@youxi1 ~]# vim d.sh #!/bin/bash for var in `head -5 /etc/passwd` do echo $var done [root@youxi1 ~]# sh d.sh root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
(1).扩展1:自定义shell分隔符htm
自定义Shell分隔符blog
(2).扩展2:C语言风格的for循环get
C语言风格的for语法格式:it
for ((变量赋值;条件判断;一次循环完成后执行的操做)) do 命令 done
注意:变量赋值能够放在for循环外部定义,一次循环完成后执行的操做能够放在循环里面。
实例以下:
[root@youxi1 ~]# vim a.sh #!/bin/bash i=0 for ((;i<=10;)) ; do echo "Num is $i" let i++ done [root@youxi1 ~]# sh a.sh Num is 0 Num is 1 Num is 2 Num is 3 Num is 4 Num is 5 Num is 6 Num is 7 Num is 8 Num is 9 Num is 10
另外变量赋值和一次循环完成后执行的操做,这两部分能够存在多个变量操做,实例以下:
[root@youxi1 ~]# vim a.sh #!/bin/bash for ((a=0,b=5;a<=10;a++,b--)) ; do echo "a-b="$[a-b] done [root@youxi1 ~]# sh a.sh a-b=-5 a-b=-3 a-b=-1 a-b=1 a-b=3 a-b=5 a-b=7 a-b=9 a-b=11 a-b=13 a-b=15
(3).扩展:seq命令
seq命令获取两个数以及之间的全部整数
[root@youxi1 ~]# vim a.sh #!/bin/bash for i in `seq -5 5` ; do echo $i done [root@youxi1 ~]# sh a.sh -5 -4 -3 -2 -1 0 1 2 3 4 5