日期: 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循環打印九九乘法表
運行腳本測試:
<<======================================【until循環】======================================>>
until循環:
until CONDITION; do
循環體
循環控制變量的修正表達式
done
進入條件:當CONDITION爲"假"時
退出條件:當CONDITION爲"真"時
示例:
使用until循環求100以內所有正整數之和
運行腳本測試:
<<======================================【循環控制】======================================>>
循環控制:
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以內所有偶數之和
運行腳本測試:
示例2:
給腳本傳遞一個用戶命名,如果該用戶登錄到該系統,則顯示其已登錄,如果沒有檢測到該用戶
登錄,則顯示該用戶未登錄,休眠3秒後繼續檢測,如此重複,直到用戶登錄爲止才結束循環。
運行腳本測試:
登錄用戶:
此時,檢測到該用戶已登錄,則顯示用戶已登錄,然後結束循環
<<======================================【特殊用法】======================================>>
while、for循環的特殊用法
while循環的特殊用法:
遍歷文件的每一行:
while read VARIABLE; do
循環體
done < /PATH/FROM/SOME_FILE
示例:
找出UID爲偶數的所有用戶,顯示整行用戶信息
運行腳本測試:
for循環的特殊用法:
for ((expr1;expr2;expr3)); do
循環體
done
expr1:定義控制變量,並初始賦值
expr2:循環控制條件
進入條件:控制條件爲"真"
退出條件:控制條件爲"假"
expr3:修正控制變量
示例:
給變量i賦值=1,在變量i的賦值小於30時,每次往自身+1,直到i的賦值等於30時退出循環,
每一次循環都與數字5相乘,得出以下結果。