Shell流程控制語句for

  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
相關文章
相關標籤/搜索