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