bash編程之:流程控制

日期: 2015年09月13日


流程控制

循環語句:for, while, until


循環:將循環體代碼執行0、1或多次

進入條件:進入循環的條件

退出條件:循環終止的條件



<<========================================for循環】========================================>>

for循環:


for VARIABLE in LIST; do

循環體

done



進入條件:列表非空

退出條件:當列表遍歷結束



LIST: 是由一個或多個空格或換行符分隔開的字符串組成:

把列表的每個字符串逐個賦值給VARIABLE表示的變量



LIST的生成方法:

(1) 整數列表

(a) {start..end}

(b) $(seq [start`step`end])

(2) 直接給出列表

(3) glob

(4) 根據命令生成



示例:

使用for循環添加10個用戶,user1-user10


運行腳本測試:




<<======================================while循環】======================================>>

while循環:


while CONDITION; do

循環體

控制變量的修正表達式

done


進入條件:當CONDITION爲"真";

退出條件:當CONDITION爲"假";



示例1

使用while循環求100以內所有正整數之和


運行腳本測試:



示例2

使用while循環打印九九乘法表


運行腳本測試:

wKiom1X7sQjTg6ZWAADYi6ubVFs834.jpg

 

 

 

<<======================================until循環】======================================>>

until循環:

 

until CONDITION; do

循環體

循環控制變量的修正表達式

done

 

進入條件:當CONDITION爲"假"時

退出條件:當CONDITION爲"真"時

 

示例:

使用until循環求100以內所有正整數之和

wKioL1X7s1eQHzcLAABMvynLa0Q214.jpg

 

運行腳本測試:

wKiom1X7sR_xjDR6AAA0nDiY7Vg981.jpg




<<======================================【循環控制】======================================>>

 

循環控制:

 

continue [n]: 提前結束本輪循環,而直接進入下一輪

break [n]: 提前結束循環

 

使用格式:

while CONDITION; do

if CONDITION2; then

break [n]

fi

done

 

 

while CONDITION; do

...

if CONDITION2; then

continue [n]

fi

....

done

 

 

死循環:

while ture; do

循環體

if CONDITION; then

break

fi

done

 

 

until false; do

循環體

if CONDITION; then

break

fi

done

 

示例1

求100以內所有偶數之和

wKiom1X7sU7ykwd0AABxdpfRa68020.jpg


運行腳本測試:

wKioL1X7s4jjcWCzAADSp2fEpLY984.jpg



示例2

給腳本傳遞一個用戶命名,如果該用戶登錄到該系統,則顯示其已登錄,如果沒有檢測到該用戶

登錄,則顯示該用戶未登錄,休眠3秒後繼續檢測,如此重複,直到用戶登錄爲止才結束循環。

wKiom1X7sXzQPUONAACGFUrJ4sM353.jpg

 

運行腳本測試:

wKioL1X7s7aC_9boAABxDZdp9_8960.jpg


登錄用戶:

wKiom1X7sZvSzd-DAAGHJunLEAc752.jpg

 

此時,檢測到該用戶已登錄,則顯示用戶已登錄,然後結束循環

wKiom1X7sZuhMhpvAADhQeJd1h4630.jpg

 



<<======================================【特殊用法】======================================>>

whilefor循環的特殊用法

 

while循環的特殊用法:

遍歷文件的每一行:

while read VARIABLE; do

循環體

done < /PATH/FROM/SOME_FILE

 

 

示例:

找出UID爲偶數的所有用戶,顯示整行用戶信息

wKiom1X7scXT37P7AABUqnpTKtY871.jpg

 

運行腳本測試:

wKioL1X7s_7h0vUfAABUqnpTKtY555.jpg


 


for循環的特殊用法:

for ((expr1;expr2;expr3)); do

循環體

done

 

expr1:定義控制變量,並初始賦值

expr2:循環控制條件

進入條件:控制條件爲"真"

退出條件:控制條件爲"假"

expr3:修正控制變量

 

示例:

給變量i賦值=1,在變量i的賦值小於30時,每次往自身+1,直到i的賦值等於30時退出循環,

每一次循環都與數字5相乘,得出以下結果。

wKiom1X7scWhVN4YAABqxTYFepE731.jpg




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章