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




你可能感兴趣的:(while,流程控制,循环控制,for,until)